<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>Riccardo</title>
        <link>http://blogs.ugidotnet.org/zanardini/Default.aspx</link>
        <description>{ .Net developer }</description>
        <language>it-IT</language>
        <copyright>Riccardo Zanardini</copyright>
        <generator>Subtext Version 2.1.0.3</generator>
        <image>
            <title>Riccardo</title>
            <url>http://blogs.ugidotnet.org/images/RSS2Image.gif</url>
            <link>http://blogs.ugidotnet.org/zanardini/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Pro C# 2010 and the .NET 4.0 Platform, Fifth Edition</title>
            <link>http://blogs.ugidotnet.org/zanardini/archive/2010/03/08/pro-c-2010-and-the-.net-4.0-platform-fifth-edition.aspx</link>
            <description>&lt;p&gt;Aspettando aprile mi appunto un link:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://apress.com/book/view/9781430225492" href="http://apress.com/book/view/9781430225492"&gt;http://apress.com/book/view/9781430225492&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/zanardini/WindowsLiveWriter/ProC2010andthe.NET.0PlatformFifthEdition_B222/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/zanardini/WindowsLiveWriter/ProC2010andthe.NET.0PlatformFifthEdition_B222/image_thumb_1.png" width="188" height="325" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2374bcff-740c-4bb7-b733-d54b178199e3" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Book" rel="tag"&gt;Book&lt;/a&gt;&lt;/div&gt;  &lt;p /&gt;  &lt;p&gt;Riccardo.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/zanardini/aggbug/98154.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Riccardo Zanardini</dc:creator>
            <guid>http://blogs.ugidotnet.org/zanardini/archive/2010/03/08/pro-c-2010-and-the-.net-4.0-platform-fifth-edition.aspx</guid>
            <pubDate>Mon, 08 Mar 2010 11:40:02 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/zanardini/comments/98154.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/zanardini/archive/2010/03/08/pro-c-2010-and-the-.net-4.0-platform-fifth-edition.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/zanardini/comments/commentRss/98154.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/zanardini/services/trackbacks/98154.aspx</trackback:ping>
        </item>
        <item>
            <title>Histats.com</title>
            <link>http://blogs.ugidotnet.org/zanardini/archive/2010/03/05/histats.com.aspx</link>
            <description>&lt;p&gt;Ieri &lt;a href="http://www.kitecampione.it/"&gt;Luca&lt;/a&gt; mi ha mostrato &lt;a href="http://www.histats.com"&gt;http://www.histats.com&lt;/a&gt; e subito l’ho integrato nel mio blog… devo ancora capirne tutte le potenzialità ma sembra davvero molto interessante… e poi è free!&lt;/p&gt;  &lt;p&gt;Riccardo.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/zanardini/aggbug/98137.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Riccardo Zanardini</dc:creator>
            <guid>http://blogs.ugidotnet.org/zanardini/archive/2010/03/05/histats.com.aspx</guid>
            <pubDate>Fri, 05 Mar 2010 07:59:32 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/zanardini/comments/98137.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/zanardini/archive/2010/03/05/histats.com.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/zanardini/comments/commentRss/98137.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/zanardini/services/trackbacks/98137.aspx</trackback:ping>
        </item>
        <item>
            <title>Patterns for Parallel Programming</title>
            <link>http://blogs.ugidotnet.org/zanardini/archive/2010/02/16/patterns-for-parallel-programming.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=86b3d32b-ad26-4bb8-a3ae-c1637026c3ee"&gt;Qui&lt;/a&gt; è disponibile il download del documento “Understanding and Applying Parallel Patterns with the .NET Framework 4” scritto da &lt;a href="http://blogs.msdn.com/toub/"&gt;Stephen Toub&lt;/a&gt; (team Parallel Computing Platform) con relativi esempi in C# o VB.&lt;/p&gt;  &lt;p&gt;Riccardo.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/zanardini/aggbug/98026.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Riccardo Zanardini</dc:creator>
            <guid>http://blogs.ugidotnet.org/zanardini/archive/2010/02/16/patterns-for-parallel-programming.aspx</guid>
            <pubDate>Tue, 16 Feb 2010 08:39:58 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/zanardini/comments/98026.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/zanardini/archive/2010/02/16/patterns-for-parallel-programming.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/zanardini/comments/commentRss/98026.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/zanardini/services/trackbacks/98026.aspx</trackback:ping>
        </item>
        <item>
            <title>SilveOS.com</title>
            <link>http://blogs.ugidotnet.org/zanardini/archive/2010/01/13/silveos.com.aspx</link>
            <description>&lt;p&gt;Alpha version of SilveOS.com:   &lt;br /&gt;&lt;a href="http://www.silveos.com"&gt;http://www.silveos.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Riccardo.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/zanardini/aggbug/97849.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Riccardo Zanardini</dc:creator>
            <guid>http://blogs.ugidotnet.org/zanardini/archive/2010/01/13/silveos.com.aspx</guid>
            <pubDate>Wed, 13 Jan 2010 10:37:46 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/zanardini/comments/97849.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/zanardini/archive/2010/01/13/silveos.com.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/zanardini/comments/commentRss/97849.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/zanardini/services/trackbacks/97849.aspx</trackback:ping>
        </item>
        <item>
            <title>System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+</title>
            <link>http://blogs.ugidotnet.org/zanardini/archive/2009/11/02/system.runtime.interopservices.externalexception-a-generic-error-occurred-in-gdi.aspx</link>
            <description>&lt;p&gt;La migrazione a Seven non è stata poi così &lt;em&gt;indolore&lt;/em&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a title="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=437335#tabs" href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=437335#tabs"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=437335#tabs&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Riccardo.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/zanardini/aggbug/97418.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Riccardo Zanardini</dc:creator>
            <guid>http://blogs.ugidotnet.org/zanardini/archive/2009/11/02/system.runtime.interopservices.externalexception-a-generic-error-occurred-in-gdi.aspx</guid>
            <pubDate>Mon, 02 Nov 2009 10:58:22 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/zanardini/comments/97418.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/zanardini/archive/2009/11/02/system.runtime.interopservices.externalexception-a-generic-error-occurred-in-gdi.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/zanardini/comments/commentRss/97418.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/zanardini/services/trackbacks/97418.aspx</trackback:ping>
        </item>
        <item>
            <title>Un update parecchio dannoso per OCS</title>
            <link>http://blogs.ugidotnet.org/zanardini/archive/2009/10/27/un-update-parecchio-dannoso-per-ocs.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://communicationsserverteam.com/archive/2009/10/14/632.aspx"&gt;http://communicationsserverteam.com/archive/2009/10/14/632.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Riccardo&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/zanardini/aggbug/97376.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Riccardo Zanardini</dc:creator>
            <guid>http://blogs.ugidotnet.org/zanardini/archive/2009/10/27/un-update-parecchio-dannoso-per-ocs.aspx</guid>
            <pubDate>Tue, 27 Oct 2009 14:29:20 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/zanardini/comments/97376.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/zanardini/archive/2009/10/27/un-update-parecchio-dannoso-per-ocs.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/zanardini/comments/commentRss/97376.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/zanardini/services/trackbacks/97376.aspx</trackback:ping>
        </item>
        <item>
            <title>NATURAL JOIN and USING clause in joins</title>
            <link>http://blogs.ugidotnet.org/zanardini/archive/2009/09/29/natural-join-and-using-clause-in-joins.aspx</link>
            <description>&lt;p&gt;Dalla mailing list UgiAltNet (&lt;a href="http://tech.groups.yahoo.com/group/ugialtnet/"&gt;http://tech.groups.yahoo.com/group/ugialtnet/)&lt;/a&gt; ecco, a mio avviso, una buona causa per cui votare:&lt;/p&gt;  &lt;p&gt;&lt;a href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=153679"&gt;https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=153679&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Riccardo.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/zanardini/aggbug/97131.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Riccardo Zanardini</dc:creator>
            <guid>http://blogs.ugidotnet.org/zanardini/archive/2009/09/29/natural-join-and-using-clause-in-joins.aspx</guid>
            <pubDate>Tue, 29 Sep 2009 08:03:07 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/zanardini/comments/97131.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/zanardini/archive/2009/09/29/natural-join-and-using-clause-in-joins.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/zanardini/comments/commentRss/97131.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/zanardini/services/trackbacks/97131.aspx</trackback:ping>
        </item>
        <item>
            <title>SQL CE e l&amp;rsquo;Arithmetic Overflow</title>
            <link>http://blogs.ugidotnet.org/zanardini/archive/2009/09/09/sql-ce-e-lrsquoarithmetic-overflow.aspx</link>
            <description>&lt;p&gt;L’esigenza del cliente consiste in un’aplicazione che, utilizzando SQL CE, permetta la memorizzazione di una serie di informazioni; una di queste è un valore numerico che potra variare da 0 a 99,9 con precisione massima ad un numero dopo la virgola.&lt;/p&gt;  &lt;p&gt;Perfetto, creo un DB SQL CE contente la tabella “test” con, fra gli altri, il campo “colonna” di tipo numeric (3,1).&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;create&lt;/span&gt; &lt;span style="color: #0000ff"&gt;table&lt;/span&gt; test &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; (&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; Id &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; &lt;span style="color: #0000ff"&gt;primary&lt;/span&gt; &lt;span style="color: #0000ff"&gt;key&lt;/span&gt; &lt;span style="color: #0000ff"&gt;identity&lt;/span&gt;(1,1),&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; ...&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; colonna &lt;span style="color: #0000ff"&gt;numeric&lt;/span&gt; (3,1)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; )&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Scrivo anche un test che eseguendo il codice:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; (var connection = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SqlCeConnection(&lt;span style="color: #006080"&gt;"Data Source=… "&lt;/span&gt;))&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     connection.Open();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     SqlCeCommand command = connection.CreateCommand();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;     command.CommandText = &lt;span style="color: #006080"&gt;"INSERT INTO Test (Colonna) VALUES (@p0)"&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;     command.Parameters.Add(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SqlCeParameter(&lt;span style="color: #006080"&gt;"p0"&lt;/span&gt;, 100));&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;     command.ExecuteNonQuery();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;si aspetta un’eccezione.&lt;/p&gt;

&lt;p&gt;Perfetto, eseguendo il test l’eccezione viene sollevata ed il test passa.&lt;/p&gt;

&lt;p&gt;In realtà l’applicazione non esegue direttamente le istruzioni SQL, ma scrive e legge le informazioni dal DB utilizzando una entity mappata con NHibernate, tale entity espone la property “colonna” di tipo double.&lt;/p&gt;

&lt;p&gt;Ovviamente anche questa parte di codice è coperta da alcuni test che ne verifichino il corretto funzionamento.&lt;/p&gt;

&lt;p&gt;In particolare scriviamo anche un test che istanziando la entity e valorizzando la property colonna con il valore 100 si aspetta un’eccezione al momento della Insert nel DB.&lt;/p&gt;

&lt;p&gt;Ricreo la tabella ed eseguo il test.&lt;/p&gt;

&lt;p&gt;Qui esiste nasce il problema: l’eccezione &lt;b&gt;NON&lt;/b&gt; viene sollevata!&lt;/p&gt;

&lt;p&gt;Ma come? Il campo non era un numeric (3,1)? &lt;/p&gt;

&lt;p&gt;A casa mia 100 è maggiore di 99,9!&lt;/p&gt;

&lt;p&gt;Come prima azione, dopo aver eseguito il test che inserisce il valore 100 senza aver sollevato l’eccezione, mi collego al db Sql CE con la management studio ed eseguo l’istruzione&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Select&lt;/span&gt; &lt;span style="color: #0000ff"&gt;count&lt;/span&gt;(*) &lt;span style="color: #0000ff"&gt;from&lt;/span&gt; test&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Risultato = “1”.&lt;/p&gt;

&lt;p&gt;Ma allora il record è entrato!&lt;/p&gt;

&lt;p&gt;Eseguo l’istruzione&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Select&lt;/span&gt; Id &lt;span style="color: #0000ff"&gt;from&lt;/span&gt; test&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Risultato = “1”.&lt;/p&gt;

&lt;p&gt;Allora eseguo l’istruzione&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Select&lt;/span&gt; colonna &lt;span style="color: #0000ff"&gt;from&lt;/span&gt; test&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Risultato = “&lt;i&gt;Major Error 0x80004005, Minor Error 0 Arithmetic Overflow&lt;/i&gt;”.&lt;/p&gt;

&lt;p&gt;Dopo una decina di secondi conditi da una sequenza di “brutti porchi” eseguo l’istruzione&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Select&lt;/span&gt; &lt;span style="color: #0000ff"&gt;cast&lt;/span&gt;([COLONNA] &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; &lt;span style="color: #0000ff"&gt;numeric&lt;/span&gt;(4,1)) &lt;span style="color: #0000ff"&gt;from&lt;/span&gt; test&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Risultato = “100”.&lt;/p&gt;

&lt;p&gt;Colto da un dubbio amletico vado a controllare le proprietà del campo colonna e vedo: “&lt;i&gt;numeric (3,1)&lt;/i&gt;”&lt;/p&gt;

&lt;p&gt;Premesso che ci sono mille soluzioni per aggirare il problema vorrei capire perchè esiste questo comportamento!&lt;/p&gt;

&lt;p&gt;Alcune premesse:&lt;/p&gt;

&lt;p&gt;La versione del mapping di NHibernate utilizzata è la seguente&lt;/p&gt;

&lt;p&gt;&lt;i&gt;&amp;lt;hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" &amp;gt;&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;la property è semplicemente mappata così:&lt;/p&gt;

&lt;p&gt;&lt;i&gt;&amp;lt;property name="Colonna"/&amp;gt;&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Il dialetto è quello per Sql CE:&lt;/p&gt;

&lt;p&gt;&lt;i&gt;&amp;lt;property name="dialect"&amp;gt;NHibernate.Dialect.MsSqlCeDialect&amp;lt;/property&amp;gt;&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;Ora vorrei rispondere alla domanda: “Perchè inserendo il valore 100 con un’istruzione sql ottengo (giustamente) l’eccezione mentre con NHibernate no?”&lt;/p&gt;

&lt;p&gt;Scaricando il codice di NHibernate (&lt;a href="http://sourceforge.net/projects/nhibernate/"&gt;http://sourceforge.net/projects/nhibernate/&lt;/a&gt; ) e modificando la reference del mio progetto agganciandomi così al codice posso facilmente debuggare quello che avviene al “Save” del mio repository.&lt;/p&gt;

&lt;p&gt;Dietro le quinte Nhibernate non fa “magie”, alla fine dei suoi ragionamenti genera una SqlCeConnection ed un SqlCeCommand e ne esegue il metodo ExecuteNonQuery.&lt;/p&gt;

&lt;p&gt;L’unica particolarità consiste nel SqlDbType utilizzato da Nhibernate, se la property della mia entity è definita come double Nhibernate forza il SqlDbType del parametro a “Float” e non “Decimal”.&lt;/p&gt;

&lt;p&gt;Perfetto: abbiamo risposto alla domanda, ci basta mappare la property così:&lt;/p&gt;

&lt;p&gt;&lt;i&gt;&amp;lt;property name="Colonna" type="Decimal" /&amp;gt;&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;ed NHibernate utilizzando il SqlDbType corretto genererà la giusta eccezione.&lt;/p&gt;

&lt;p&gt;Ora però mi sorge un’altra domanda: io posso anche accettare che mi si imponga quale SqlDbType utilizzare ma se il campo è numeric (3,1) perchè SQL CE si è memorizzato il valore 100?&lt;/p&gt;

&lt;p&gt;A questa domanda non ho ancora saputo rispondere... idee?&lt;/p&gt;

&lt;p&gt;Riccardo.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/zanardini/aggbug/97025.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Riccardo Zanardini</dc:creator>
            <guid>http://blogs.ugidotnet.org/zanardini/archive/2009/09/09/sql-ce-e-lrsquoarithmetic-overflow.aspx</guid>
            <pubDate>Wed, 09 Sep 2009 13:15:37 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/zanardini/comments/97025.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/zanardini/archive/2009/09/09/sql-ce-e-lrsquoarithmetic-overflow.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/zanardini/comments/commentRss/97025.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/zanardini/services/trackbacks/97025.aspx</trackback:ping>
        </item>
        <item>
            <title>Idee per Rhino Mocks 4.0?</title>
            <link>http://blogs.ugidotnet.org/zanardini/archive/2009/09/04/idee-per-rhino-mocks-4.0.aspx</link>
            <description>&lt;p&gt;Il forum è &lt;a href="http://nhprof.uservoice.com/pages/28152-rhino-mocks-4-0"&gt;qui&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Riccardo.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/zanardini/aggbug/97000.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Riccardo Zanardini</dc:creator>
            <guid>http://blogs.ugidotnet.org/zanardini/archive/2009/09/04/idee-per-rhino-mocks-4.0.aspx</guid>
            <pubDate>Fri, 04 Sep 2009 15:31:43 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/zanardini/comments/97000.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/zanardini/archive/2009/09/04/idee-per-rhino-mocks-4.0.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/zanardini/comments/commentRss/97000.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/zanardini/services/trackbacks/97000.aspx</trackback:ping>
        </item>
        <item>
            <title>Skebby</title>
            <link>http://blogs.ugidotnet.org/zanardini/archive/2009/08/27/skebby.aspx</link>
            <description>&lt;p&gt;Skebby, lo Skype per gli SMS?&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.skebby.it/" href="http://www.skebby.it/"&gt;http://www.skebby.it/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Riccardo.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/zanardini/aggbug/96941.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Riccardo Zanardini</dc:creator>
            <guid>http://blogs.ugidotnet.org/zanardini/archive/2009/08/27/skebby.aspx</guid>
            <pubDate>Thu, 27 Aug 2009 07:29:16 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/zanardini/comments/96941.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/zanardini/archive/2009/08/27/skebby.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/zanardini/comments/commentRss/96941.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/zanardini/services/trackbacks/96941.aspx</trackback:ping>
        </item>
    </channel>
</rss>