<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>ADO.NET [Italiano]</title>
        <link>http://blogs.ugidotnet.org/raffaele/category/701.aspx</link>
        <description>Programmazione di ADO.NET (lingua Italiana)</description>
        <language>it-IT</language>
        <copyright>Raffaele Rialdi</copyright>
        <managingEditor>malta@vevy.com</managingEditor>
        <generator>Subtext Version 1.9.5.176</generator>
        <item>
            <title>La rivolta contro i dataset</title>
            <link>http://blogs.ugidotnet.org/raffaele/archive/2005/04/05/13647.aspx</link>
            <description>&lt;P&gt;A poco pi&amp;#249; di un mese di distanza dal &lt;A href="http://www.ugidotnet.org/workshops/workshops_detail.aspx?ID=680d4301-41c9-4a5e-8f62-66563ebecd47"&gt;workshop &amp;#8220;Data Management&amp;#8221;&lt;/A&gt; dove ho evidenziato le debolezze del dataset per progetti consistenti, ecco apparire su MSDN un &lt;A href="http://msdn.microsoft.com/data/default.aspx?pull=/library/en-us/dnaspp/html/custentcls.asp"&gt;articolo intitolato &amp;#8220;On the Way to Mastering ASP.NET: Introducing Custom Entity Classes&amp;#8221;&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Quando nel summary ho letto le parole &amp;#8220;There are situations for which untyped &lt;B&gt;DataSets&lt;/B&gt; may not be the best solution for data manipulation&amp;#8221; mi sono detto che mi suonavano molto familiari :-)&lt;/P&gt;
&lt;P&gt;Naturalmente, essendo orientato ad asp.net l'articolo non tocca quegli aspetti che sono stati il culmine della mia sessione, in particolare (ma non solo) l'implementazione di &lt;STRONG&gt;IBindingList&lt;/STRONG&gt; e &lt;STRONG&gt;ITypedList&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;Resta comunque il fatto che il principio &amp;#232; lo stesso: il dataset come in-memory database &amp;#232; troppo povero per poter rappresentare adeguatamente un object model per una applicazione di media-alta complessit&amp;#224;. Se poi vogliamo guardare alle performance i risultati sono sempre a favore delle custom entities come ho potuto mostrare durante la mia sessione con i risultati di un piccolo ma significativo benchmark.&lt;/P&gt;&lt;img src="http://blogs.ugidotnet.org/raffaele/aggbug/13647.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Raffaele Rialdi</dc:creator>
            <guid>http://blogs.ugidotnet.org/raffaele/archive/2005/04/05/13647.aspx</guid>
            <pubDate>Tue, 05 Apr 2005 20:18:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/raffaele/comments/13647.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/raffaele/archive/2005/04/05/13647.aspx#feedback</comments>
            <slash:comments>14</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/raffaele/comments/commentRss/13647.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Select count(*), ExecuteScalar e NullReferenceException</title>
            <link>http://blogs.ugidotnet.org/raffaele/archive/2004/11/23/6027.aspx</link>
            <description>&lt;P&gt;In sintesi il problema &amp;#232; l'esecuzione con ExecuteScalar di una &amp;#8220;select count(*) ...&amp;#8220;.&lt;/P&gt;
&lt;P&gt;Non so per quale strano destino non mi sia mai capitato prima ma questa banale operazione mi ha fatto perdere una mezzoretta per capire come mai la ExecuteScalar (su SQL Server 2000 SP3) lanciava una NullReferenceException.&lt;/P&gt;
&lt;P&gt;Per prima cosa controllo sotto debugger che il command sia valido, che la connection sia corretta e aperta, che i parameters siano popolati correttamente .... insomma tutto senza problemi ma la NullReferenceException continua ad imperversare.&lt;/P&gt;
&lt;P&gt;Da una select count(*) non mi aspettavo altro che un banale intero ma ecco che lanciando il comando nel query analyzer scopro che .... &lt;STRONG&gt;alcune volte la select count(*) ritorna un resultset vuoto!&lt;/STRONG&gt;. Alcune volte non significa che il comportamento &amp;#232; randomico ma per esempio capita quando c'&amp;#232; la clausola &amp;#8220;&lt;STRONG&gt;group by&lt;/STRONG&gt;&amp;#8220;.&lt;/P&gt;
&lt;P&gt;Forse per alcuni &amp;#232; una banalit&amp;#224; ma io mi aspettavo un pi&amp;#249; tradizionale &amp;#8220;0&amp;#8221; e cio&amp;#232; un resultset di una riga ed una colonna con un intero nell'unica riga.&lt;BR&gt;Ovviamente ado.net non ne pu&amp;#242; nulla perch&amp;#232; se il resultset non c'&amp;#232; non pu&amp;#242; accadere nulla di diverso visto che la ExecuteScalar ha proprio come scopo quello di tornare il risultato della prima cella del resultset che quindi deve esistere.&lt;/P&gt;
&lt;P&gt;Spero solo che esista un ottimo motivo nello standard SQL per cui certe volte questo possa accadere.&lt;/P&gt;&lt;img src="http://blogs.ugidotnet.org/raffaele/aggbug/6027.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Raffaele Rialdi</dc:creator>
            <guid>http://blogs.ugidotnet.org/raffaele/archive/2004/11/23/6027.aspx</guid>
            <pubDate>Tue, 23 Nov 2004 20:01:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/raffaele/comments/6027.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/raffaele/archive/2004/11/23/6027.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/raffaele/comments/commentRss/6027.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>