<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>.Net</title>
        <link>http://blogs.ugidotnet.org/crasch/category/.Net.aspx</link>
        <description>Varie su .net</description>
        <language>it-IT</language>
        <copyright>Carlo Folini</copyright>
        <generator>Subtext Version 2.6.0.0</generator>
        <item>
            <title>Custom Configuration in ASP.NET 2.0: tips</title>
            <link>http://blogs.ugidotnet.org/crasch/archive/2006/04/21/39218.aspx</link>
            <description>Ciao,
un paio di tips collegati al post di LucaVisto che ci ho perso un po' di tempo ....Per specificare il nome del tag degli elementi all'interno di "actions" nella classe in cui si implementa la collezione "MyActionCollection" bisogna specificare il nome con la propriet&amp;#224; ElementName.Es. se volessimo mettere un tag "pippo" (evviva la fantasia)public sealed class MyActionCollection : ConfigurationElementCollection
{
protected override ConfigurationElement CreateNewElement()
{
return new MyAction();
}
protected override object GetElementKey(ConfigurationElement element)
{
return ((MyAction)element).Name;
}
public override ConfigurationElementCollectionType CollectionType
{
get
{
return ConfigurationElementCollectionType.BasicMap;
}
}
protected override string ElementName
{
get
{
return "pippo";
}
}
}
Altra chicca poco documentata se vogliamo specificare la configurazione in un file separato definiamo la configSection in maniera usuale, ma al posto di inserire l'xml corrispondente direttamente nel app.config o web.config mettiamo un 'placeholder' con l'attributo configSource che ha come valore il nome del file. es:&amp;lt;?xml version="1.0"?&amp;gt;
&amp;lt;configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"&amp;gt;
&amp;lt;configSections&amp;gt;
    &amp;lt;section name="loggingConfiguration" restartOnExternalChanges="true" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging"/&amp;gt;
&amp;lt;/configSections&amp;gt;
&amp;lt;loggingConfiguration configSource="LoggingConfiguration.config"/&amp;gt;
&amp;lt;/configuration&amp;gt; 
&lt;img src="http://blogs.ugidotnet.org/crasch/aggbug/39218.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Carlo Folini</dc:creator>
            <guid>http://blogs.ugidotnet.org/crasch/archive/2006/04/21/39218.aspx</guid>
            <pubDate>Fri, 21 Apr 2006 18:28:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/crasch/archive/2006/04/21/39218.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/crasch/comments/commentRss/39218.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/crasch/services/trackbacks/39218.aspx</trackback:ping>
        </item>
        <item>
            <title>.Net Fusion &amp; security</title>
            <link>http://blogs.ugidotnet.org/crasch/archive/2006/02/07/34403.aspx</link>
            <description>Interessante sito per sapere tutto (o quasi) su fusion e security in .Net.
Scritto per la 1.1 ha degli aggiornamenti significativi per la 2.0.
http://www.grimes.demon.co.uk/workshops/index.htm&lt;img src="http://blogs.ugidotnet.org/crasch/aggbug/34403.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Carlo Folini</dc:creator>
            <guid>http://blogs.ugidotnet.org/crasch/archive/2006/02/07/34403.aspx</guid>
            <pubDate>Tue, 07 Feb 2006 00:32:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/crasch/archive/2006/02/07/34403.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/crasch/comments/commentRss/34403.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/crasch/services/trackbacks/34403.aspx</trackback:ping>
        </item>
        <item>
            <title>Launch event streaming...</title>
            <link>http://blogs.ugidotnet.org/crasch/archive/2005/11/07/29387.aspx</link>
            <description>Sembra che il webcast su
http://www.microsoft.com/emea/steveballmerlive/
non &amp;#232; disponibile.
Su 
http://www.microsoft.com/windowsserversystem/applicationplatform/launch2005/keynote.mspx
sembra (in differita?) disponibile&lt;img src="http://blogs.ugidotnet.org/crasch/aggbug/29387.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Carlo Folini</dc:creator>
            <guid>http://blogs.ugidotnet.org/crasch/archive/2005/11/07/29387.aspx</guid>
            <pubDate>Mon, 07 Nov 2005 19:20:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/crasch/archive/2005/11/07/29387.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/crasch/comments/commentRss/29387.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/crasch/services/trackbacks/29387.aspx</trackback:ping>
        </item>
        <item>
            <title>Riflessioni sull'accedere ai servizi tramite un 'router' di messaggio</title>
            <link>http://blogs.ugidotnet.org/crasch/archive/2005/10/24/28580.aspx</link>
            <description>Nelle scorse settimane ho discusso sull'opportunit&amp;#224; o meno di far passare tutte le chiamate al SOS (Service Oriented Server ;-)) attraverso un unico servizio (per intenderci un asmx) che invia il messaggio al servizio corretto in base al contenuto.
Venendo da un modo di applicazioni n-tier, questo paradigma non mi &amp;#232; molto congeniale.Una delle principali problematiche che vedo sono legate alla facilit&amp;#224; con cui uno sviluppatore riesce a 'trovare' i servizi che gli servono per implementare una determinata funzionalit&amp;#224; (tale concetto lo riassumo come discoverability, che mi sembra rendere bene l'idea, ma non &amp;#232; forse neanche inglese!).Averli in un asmx raggruppati per tipologie coerenti facilita molto in contrasto con doverli andare a ricercare in una qualche sorta di metabase.
Chiaramente la strada maestra sarebbe quella di avere un coordinatore (analista?) che scriva della documentazione e degli sviluppatori che la leggano....nessuno &amp;#232; perfetto!
L'altra &amp;#232; legata agli strumenti che uno sviluppatore deve avere per creare i&amp;nbsp;contratti. Creare un asmx &amp;#232; banale, creare un sistema per censire i 'contratti' in un metabase &amp;#232; gi&amp;#224; pi&amp;#249; difficile.
Ho trovato un articolo di Rocky Lhotka http://www.theserverside.net/articles/showarticle.tss?id=SOAVersioningCovenant" (Barbieri Lorenzo vedi che anch'io mi st&amp;#242; impegnando sulle regole dell'usabilit&amp;#224; specialmente sulla 4 ;-) )che parla di questi argomenti, che mi ha chiarito un po' le motivazioni di ragionare per covenant (patti) in contrapposizione ai servizi.Riassumendo e semplificando (da un punto di vista non troppo SOA) dice che anche per i servizi dovrebbero esserci dei meccanismi simili agli overload dei metodi. Questo per semplificare l'estensibilit&amp;#224; dei metodi.In effetti se cerchiamo di esporre un metodo con degli overload in un asmx viene ritornato un errore quando andiamo a recuperare il wsdl del servizio.
Parlando del servizio unico, lui lo sconsiglia proprio per i discorsi di 'discoverability'.Lhotka dice anche di aver richiesto al team di Indigo il supporto nell'IDE di tali feature....devo ancora riuscire a installare WCF per capire come si relazionano i data contract con questi discorsi.&lt;img src="http://blogs.ugidotnet.org/crasch/aggbug/28580.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Carlo Folini</dc:creator>
            <guid>http://blogs.ugidotnet.org/crasch/archive/2005/10/24/28580.aspx</guid>
            <pubDate>Mon, 24 Oct 2005 00:20:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/crasch/archive/2005/10/24/28580.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/crasch/comments/commentRss/28580.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/crasch/services/trackbacks/28580.aspx</trackback:ping>
        </item>
        <item>
            <title>Skin per winform</title>
            <link>http://blogs.ugidotnet.org/crasch/archive/2005/10/20/28403.aspx</link>
            <description>Alcuni prodotti (anche per .net 2.0) per skinning delle winform....
DotNetSkin 
IrisSkin 
http://www.stardock.com/&lt;img src="http://blogs.ugidotnet.org/crasch/aggbug/28403.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Carlo Folini</dc:creator>
            <guid>http://blogs.ugidotnet.org/crasch/archive/2005/10/20/28403.aspx</guid>
            <pubDate>Thu, 20 Oct 2005 22:46:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/crasch/archive/2005/10/20/28403.aspx#feedback</comments>
            <slash:comments>92</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/crasch/comments/commentRss/28403.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/crasch/services/trackbacks/28403.aspx</trackback:ping>
        </item>
        <item>
            <title>Condividere i tipi nei proxy generati con WSDL.exe </title>
            <link>http://blogs.ugidotnet.org/crasch/archive/2005/10/17/28165.aspx</link>
            <description>
Dovendo gestire le chiamate ad un numero elevato di servizi .asmx (sia che si chiamino da asp.net che da smartclient) nasce il problema di come gestire i casi in cui uno schema &amp;#232; condiviso da pi&amp;#249; servizi.
Per i casi 'semplici' con l'utilizzo del "add web references" di visual studio 2005 si ottiene un proxy che ingloba i tipi esposti da quel servizio. Avremo quindi inclusi sia i tipi semplici che 'entity object' e DataSet.
Nel primo caso sar&amp;#224; aggiunta la definizione nel file Reference.cs
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.26")][System.SerializableAttribute()][System.Diagnostics.DebuggerStepThroughAttribute()][System.ComponentModel.DesignerCategoryAttribute("code")][System.Xml.Serialization.XmlTypeAttribute(Namespace="http://myNamespace/")]public partial class SalesOrderDetail {        private int salesOrderIdField;        private decimal unitPriceField;        private string carrierTrackingNumberField;        private System.DateTime modifiedDateField;        ///     public int SalesOrderId {        get {            return this.salesOrderIdField;        }        set {            this.salesOrderIdField = value;        }    }        ///     public decimal UnitPrice {        get {            return this.unitPriceField;        }        set {            this.unitPriceField = value;        }    }        ///     public string CarrierTrackingNumber {        get {            return this.carrierTrackingNumberField;        }        set {            this.carrierTrackingNumberField = value;        }    }        ///     public System.DateTime ModifiedDate {        get {            return this.modifiedDateField;        }        set {            this.modifiedDateField = value;        }    }}
 
nel secondo oltre che al codice (un tipo che eredita da System.Data.DataSet) avremo anche l'xsd corrispondente al typed dataset.
La classe generata ha un namespace in cui 'vivono' i tipi.
Di default il namespace &amp;#232; composto dal namespace di default dell'applicazione (impostato nelle properties del progetto nel tab "Application") con il nome impostato in fase di "add web reference" (che di default &amp;#232; localhost).
Tale default pu&amp;#242; essere modificato andando a impostare la propriet&amp;#224; "Custom Tool Namespace" sul file .map.
Nei casi pi&amp;#249; complessi pu&amp;#242; capitare che un tipo sia condiviso da pi&amp;#249; asmx magari in progetti diversi.
Per poter gestire al meglio questo scenario magari avremo messo i tipi condivisi in una o pi&amp;#249; library aggiunta come reference ai progetti.
Per il meccanismo sopra descritto ogni volta che aggiungiamo un servizio al nostro client viene generato un nuovo proxy.
Fino alla versione 2.0 del framework le possibili soluzioni (che mi vengono in mente) erano lo scordarsi l'add web reference (e farsi qualcosa di custom per portarsi a spasso i tipi) oppure impostare lo stesso namespace per i proxy generati e togliere a mano i tipi ridondanti (operazione che bisognava ripetere ogni volta che si faceva una "update web reference").
Dalla 2.0 &amp;#232; stato aggiunto il supporto per questi scenari tramite lo switch /sharetypes del wsdl.exe.
Specificando i servizi che si vogliono utilizzare con lo switch impostato verr&amp;#224; generato un unico proxy che mette a fattor comune i tipi uguali (the namespace, name, and wire signature must be identical).
C:\cf3 &gt;wsdl /sharetypes http://localhost:1032/SimpleObject/Service1.asmx http://localhost:1056/SimpleObject2/Service2.asmx /namespace:MyClientNamespace.MyObjectsMicrosoft (R) Web Services Description Language Utility[Microsoft (R) .NET Framework, Version 2.0.50727.26]Copyright (C) Microsoft Corporation. All rights reserved.Writing file 'C:.cs'.
(che io sappia ndr)Il supporto &amp;#232; disponibile attualmente solo con wsdl.exe, per cui per poterlo utilizzare dal vs2005 &amp;#232; necessario un po' di manovre con gli add-in o con qualche macro.
L'idea &amp;#232; di ciclare, ogni volta che viene richiesta una "update web reference", su tutte le Web References.
Per ogni reference prendere l'url, aggiungerlo alla comand line di wsdl.exe, cancellare i files sottostanti (*.map, xsd, wsdl, disco) eseguire il comando e prendersi la classe generata.
 
Disclaimer: 
questa soluzione non &amp;#232; stata testata in maniera 'esaustiva' (come peraltro si desume dal progetto di esempio).
Viste le lamentele sul formato del mio ultimo post (come potete vedere) mi sono munito di IMHO.
Qualcuno ha idea del perch&amp;#232; in fase di aggiunta immagini clickando sul tasto browse mi becco 
---------------------------Microsoft Internet Explorer---------------------------An error has occurred in this dialog.
Error: 73Object doesn't support this property or method---------------------------OK   ---------------------------
Riferimenti:
http://blogs.thinktecture.com/cweyer/archive/2004/08/11/212843.aspx
powered by IMHO 1.2&lt;img src="http://blogs.ugidotnet.org/crasch/aggbug/28165.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Carlo Folini</dc:creator>
            <guid>http://blogs.ugidotnet.org/crasch/archive/2005/10/17/28165.aspx</guid>
            <pubDate>Mon, 17 Oct 2005 22:57:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/crasch/archive/2005/10/17/28165.aspx#feedback</comments>
            <slash:comments>174</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/crasch/comments/commentRss/28165.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/crasch/services/trackbacks/28165.aspx</trackback:ping>
        </item>
        <item>
            <title>Comparazione performance di dataset 2.0 e entity object </title>
            <link>http://blogs.ugidotnet.org/crasch/archive/2005/09/29/27200.aspx</link>
            <description>Era un po' che volevo fare qualche prova a riguardo ma, da buon programmatore, sono essenzialmente pigro.&amp;nbsp;
Partendo dalla demo dell'articolo di Brian Noyes in cui f&amp;#224; una analisi delle varie tipologie di comunicazione utilizzabili da uno smarclient, sono andato a vedere come si relazionano queste due modalit&amp;#224; di portarsi a spasso i dati (prescindendo da ragionamenti da quale sia meglio in termini di SO ;-)).
Essenzialmente un'applicazione winform che chiama un webservice che interroga l'adventrure works (Il tutto fatto con la RC di vs2005 e la CTP di settembre di SQL).
I dati vengono presi con una query 'semplice' ovvero
SELECT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SalesOrderID, UnitPrice, CarrierTrackingNumber, ModifiedDateFROM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sales.SalesOrderDetailWHERE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SalesOrderID &amp;lt; 44000)
estraendo circa 300 record (un&amp;nbsp;numero di record&amp;nbsp;verosimile per quello che solitamente mi serve).
Questi dati vengono poi messi da un oggetto di accesso ai dati &amp;nbsp;in un array di 'entity object' in un caso 
using System;
namespace SmartClientCommDataAccess
{
[Serializable]
public class SalesOrderDetail
{
private int m_SalesOrderId;
public int SalesOrderId
{
get
{
return m_SalesOrderId;
}
set
{
m_SalesOrderId = value;
}
}
private decimal m_UnitPrice;
public decimal UnitPrice
{
get
{
return m_UnitPrice;
}
set
{
m_UnitPrice = value;
}
}
private string m_CarrierTrackingNumber;
public string CarrierTrackingNumber
{
get
{
return m_CarrierTrackingNumber;
}
set
{
m_CarrierTrackingNumber = value;
}
}
private DateTime m_ModifiedDate;
public DateTime ModifiedDate
{
get
{
return m_ModifiedDate;
}
set
{
m_ModifiedDate = value;
}
}
}
}
&amp;nbsp;
e in un dataset tipizzato nell'altro.
Dal webservice vengono esposti i due metodi corrispondenti, che oltre a ritornare l'oggetto ritornano anche il tempo di esecuzione (ticks).
Nel caso del dataset il metodo &amp;#232;:
[WebMethod]
public MyDataSet GetSalesDetailDataset(out long timeTicks)
{
long start = HiResTimer.Ticks;
ServiceObject so = new ServiceObject();
MyDataSet res = new MyDataSet();
res.EnforceConstraints = false;
res.SchemaSerializationMode = SchemaSerializationMode.ExcludeSchema;
res = so.GetSalesDetailDataset();
res.RemotingFormat = SerializationFormat.Binary;
long end = HiResTimer.Ticks;
timeTicks = end - start;
return res;
}
&amp;nbsp;
HiResTimer &amp;#232; un timer un po' pi&amp;#249; preciso del DateTime.now.ticks usato da Noyes (comunque non sposta di molto il discorso sigh!).
Lo smart client chiama questi due ws e f&amp;#224; qualche ulteriore statistica sui tempi.
long start = HiResTimer.Ticks;
localhost.WebServiceShim shim = new TestClient.localhost.WebServiceShim();
TestClient.localhost.MyDataSet myDet = shim.GetSalesDetailDataset(out ticks);
long endCall = HiResTimer.Ticks;
dataGridView1.DataSource = myDet.SalesOrderDetail;
long endDataBind = HiResTimer.Ticks;
textService.Text = "Dataset Ticks: Call=" + ShowTimings(endCall - start, endDataBind - start) + Environment.NewLine
+ "service=" + ShowTimings(ticks, endDataBind - start) + Environment.NewLine
+ "Serialize=" + ShowTimings(endCall - start - ticks, endDataBind - start) + Environment.NewLine
+ "databind=" + ShowTimings(endDataBind - endCall, endDataBind - start) + Environment.NewLine
+ "total=" + ShowTimings(endDataBind - start, endDataBind - start);
&amp;nbsp;
Il risultato &amp;#232; che, ovviamente, gli entity object sono pi&amp;#249; performanti.
Per questi abbiamo il risultato seguente
Array Ticks: Call=44,421 milliseconds 87% (Tick=159010)
service=4,2731 milliseconds 8% (Tick=15296)
Serialize=40,148 milliseconds 78% (Tick=143714)
databind=6,4647 milliseconds 12% (Tick=23141)
total=50,886 milliseconds 100% (Tick=182151) &amp;nbsp;per i dataset
Dataset Ticks: Call=122,01 milliseconds 78% (Tick=436775)
service=14,126 milliseconds 9% (Tick=50568)
Serialize=107,89 milliseconds 69% (Tick=386207)
databind=34,048 milliseconds 21% (Tick=121878)
total=156,06 milliseconds 100% (Tick=558653) Ovvero un tempo di mezzo decimo per gli EO contro un decimo e mezzo per dataset ovvero un fattore 3.Aumentando il numero di records (5000) le differenze si assottigliano arrivando ad un fattore 2
Array Ticks: Call=236,04 milliseconds 95% (Tick=844919)
service=40,865 milliseconds 16% (Tick=146280)
Serialize=195,17 milliseconds 78% (Tick=698639)
databind=11,527 milliseconds 4% (Tick=41263)
total=247,56 milliseconds 100% (Tick=886182)
&amp;nbsp;per i dataset
Dataset Ticks: Call=412,00 milliseconds 71% (Tick=1474794)
service=46,953 milliseconds 8% (Tick=168073)
Serialize=365,05 milliseconds 63% (Tick=1306721)
databind=164,91 milliseconds 28% (Tick=590316)
total=576,91 milliseconds 100% (Tick=2065110) &lt;img src="http://blogs.ugidotnet.org/crasch/aggbug/27200.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Carlo Folini</dc:creator>
            <guid>http://blogs.ugidotnet.org/crasch/archive/2005/09/29/27200.aspx</guid>
            <pubDate>Thu, 29 Sep 2005 01:39:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/crasch/archive/2005/09/29/27200.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/crasch/comments/commentRss/27200.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/crasch/services/trackbacks/27200.aspx</trackback:ping>
        </item>
        <item>
            <title>Io c'era!</title>
            <link>http://blogs.ugidotnet.org/crasch/archive/2005/09/07/25953.aspx</link>
            <description>come promesso il post!
 
Ciao
CArlo
 &lt;img src="http://blogs.ugidotnet.org/crasch/aggbug/25953.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Carlo Folini</dc:creator>
            <guid>http://blogs.ugidotnet.org/crasch/archive/2005/09/07/25953.aspx</guid>
            <pubDate>Wed, 07 Sep 2005 15:33:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/crasch/archive/2005/09/07/25953.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/crasch/comments/commentRss/25953.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/crasch/services/trackbacks/25953.aspx</trackback:ping>
        </item>
        <item>
            <title>Visualizzazione grafica occupazione spazio su disco</title>
            <link>http://blogs.ugidotnet.org/crasch/archive/2005/08/25/25099.aspx</link>
            <description>Se ogni tanto vi chiedete cosa riempie il vostro disco fisso questo tool f&amp;#224; per voi! My hard disk&lt;img src="http://blogs.ugidotnet.org/crasch/aggbug/25099.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Carlo Folini</dc:creator>
            <guid>http://blogs.ugidotnet.org/crasch/archive/2005/08/25/25099.aspx</guid>
            <pubDate>Thu, 25 Aug 2005 18:44:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/crasch/archive/2005/08/25/25099.aspx#feedback</comments>
            <slash:comments>198</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/crasch/comments/commentRss/25099.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/crasch/services/trackbacks/25099.aspx</trackback:ping>
        </item>
        <item>
            <title>Utilizzo dataset tipizzati in asp.net 2.0</title>
            <link>http://blogs.ugidotnet.org/crasch/archive/2005/04/06/13690.aspx</link>
            <description>Dopo un po' di manovre sono finalmente riuscito a fare il databind di un dataset tipizzato in un progetto asp.net 2.0 ad una GridView.
Premetto che la cosa dovrebbe essere banale, ma con i bachi della ctp di febbraio non &amp;#232; cos&amp;#236; semplice.
L'idea dovrebbe essere creo un progetto asp.net aggiungo un dataset che contiene ad esempio la tabella customers del northwind aggiungo una GridView faccio il databind creando un ObjectDataSource sul dataset.
Questo non funziona! Workaround creo una solution vuota, aggiungo un progetto library e creo un dataset agganciandolo alla tabella.
Nella stessa solution&amp;nbsp;creo un progetto web gli metto la reference alla library appena creata, aggiungo una GridView creo un ObjectDataSource sul dataset della library. 
Funziona tutto...supporto design time, paging ecc.
Speriamo che con la beta2 questo sia solo un brutto ricordo!
&amp;nbsp;&lt;img src="http://blogs.ugidotnet.org/crasch/aggbug/13690.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Carlo Folini</dc:creator>
            <guid>http://blogs.ugidotnet.org/crasch/archive/2005/04/06/13690.aspx</guid>
            <pubDate>Wed, 06 Apr 2005 19:53:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/crasch/archive/2005/04/06/13690.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/crasch/comments/commentRss/13690.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/crasch/services/trackbacks/13690.aspx</trackback:ping>
        </item>
    </channel>
</rss>