<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 Development</title>
        <link>http://blogs.ugidotnet.org/Alby/category/412.aspx</link>
        <description>.NET Development</description>
        <language>it-IT</language>
        <copyright>Alberto Dallagiacoma</copyright>
        <generator>Subtext Version 2.1.0.3</generator>
        <item>
            <title>NHibernate in applicazioni desktop</title>
            <link>http://blogs.ugidotnet.org/Alby/archive/2009/12/10/nhibernate-in-applicazioni-desktop.aspx</link>
            <description>&lt;p&gt;Ho sempre notato che la maggior parte degli esempi e della documentazione che si trova in rete su &lt;a href="http://www.nhforge.org" target="_blank"&gt;NHibernate&lt;/a&gt; riguarda applicazioni web, e per me che ho sempre dato precedenza ad applicazioni Smart Client, è stato un problema, almeno all’inizio.&lt;/p&gt;  &lt;p&gt;Fortunatamente, il solito &lt;a href="http://ayende.com/blog/" target="_blank"&gt;Ayende&lt;/a&gt; è corso in nostro aiuto: su &lt;a href="http://msdn.microsoft.com/en-us/magazine/default.aspx" target="_blank"&gt;MSDN magazine&lt;/a&gt; è stato pubblicato un suo  articolo che tratta l’utilizzo di NHibernate in un’applicazione WPF, spiegando con quali tecniche gestire la concorrenza, il databinding e la Session in un contesto molto diverso da quello web quale è l’applicazione desktop.     &lt;br /&gt;Articolo interessante che merita una lettura: lo trovate &lt;a href="http://msdn.microsoft.com/en-us/magazine/ee819139.aspx" target="_blank"&gt;qui&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Alby/aggbug/97694.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Alberto Dallagiacoma</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alby/archive/2009/12/10/nhibernate-in-applicazioni-desktop.aspx</guid>
            <pubDate>Thu, 10 Dec 2009 15:50:25 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alby/archive/2009/12/10/nhibernate-in-applicazioni-desktop.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alby/comments/commentRss/97694.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alby/services/trackbacks/97694.aspx</trackback:ping>
        </item>
        <item>
            <title>Linq2NHibernate, FirstOrDefault e&amp;hellip; I Dire Straits</title>
            <link>http://blogs.ugidotnet.org/Alby/archive/2009/08/05/linq2nhibernate-firstordefault-ehellip-i-dire-straits.aspx</link>
            <description>&lt;p&gt;Tutti conosciamo i &lt;a href="http://it.wikipedia.org/wiki/Dire_Straits" target="_blank"&gt;Dire Straits&lt;/a&gt;, vero? Bene. &lt;/p&gt;  &lt;p&gt;La miglior formazione dei Dire Straits, a mio avviso, è stata quella composta da: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://it.wikipedia.org/wiki/Mark_Knopfler" target="_blank"&gt;Mark Knopfler&lt;/a&gt; (voce e chitarra solista) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://it.wikipedia.org/wiki/John_Illsley" target="_blank"&gt;John Illsley&lt;/a&gt; (basso) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://it.wikipedia.org/wiki/Hal_Lindes" target="_blank"&gt;Hal Lindes&lt;/a&gt; (chitarra ritmica) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://it.wikipedia.org/wiki/Alan_Clark" target="_blank"&gt;Alan Clark&lt;/a&gt; (tastiere) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://it.wikipedia.org/wiki/Terry_Williams" target="_blank"&gt;Terry Williams&lt;/a&gt; (batteria) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Se provassimo a mappare il tutto in un Domain Model, potremmo scrivere:&lt;/p&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:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:f97f4fd6-c0df-4c65-9c37-4e4c8e6beb3e" class="wlWriterEditableSmartContent"&gt;&lt;pre style="background-color:#FFFFFF;white-space:-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;overflow: auto;"&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; Band 
{    
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; BandId { &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;; }    
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; IList&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Player&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; Members { &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;; } 
}
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; Player
{    
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; PlayerId { &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;; }    
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; FirstName { &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;; }
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; LastName { &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;; }
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; Band Band { &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;; }
}
&lt;/span&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p /&gt;

&lt;p&gt;E ora che abbiamo Linq2NHibernate possiamo scrivere una cosa del tipo: &lt;/p&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:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:46936d2f-62e2-489f-bbd9-927702c52440" class="wlWriterEditableSmartContent"&gt;&lt;pre style="background-color:#FFFFFF;white-space:-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;overflow: auto;"&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt; (ISession session &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; SessionHelper.OpenSession()) 
{
    Band myBand &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; session.Linq&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Band&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;().Expand(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Members&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
                    .Where&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Band&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;(bnd &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; bnd.BandId &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;)
                    .FirstOrDefault&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Band&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;();
    Console.WriteLine(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Nome band: {0}, numero di componenti: {1}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, 
        myBand.Name, 
        myBand.Members.Count); 
}
&lt;/span&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p /&gt;

&lt;p&gt;L'output però non è quello che ci aspettiamo: &lt;/p&gt;

&lt;p&gt;Nome band: Dire Straits, numero di componenti: 1 &lt;/p&gt;

&lt;p&gt;La causa è nel codice SQL generato da Linq2NHibernate, che, da Profiler, risulta essere questo:&lt;/p&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:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:9770c189-e3f8-494f-b180-2e3b4038af88" class="wlWriterEditableSmartContent"&gt;&lt;pre style="background-color:#FFFFFF;white-space:-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;overflow: auto;"&gt;&lt;span style="color: #0000FF;"&gt;exec&lt;/span&gt;&lt;span style="color: #000000;"&gt; sp_executesql N&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;SELECT top 1 this_.BandId as BandId4_1_, 
this_.Name as Name4_1_, members2_.BandId as BandId3_, 
members2_.PlayerId as PlayerId3_, members2_.PlayerId as PlayerId2_0_, 
members2_.FirstName as FirstName2_0_, members2_.LastName as LastName2_0_,
members2_.BandId as BandId2_0_ 
FROM dbo.Band this_ 
    left outer join dbo.Player members2_ on 
        this_.BandId=members2_.BandId 
WHERE this_.BandId = @p0&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,N&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;@p0 int&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #008000;"&gt;@p0&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p /&gt;

&lt;p&gt;In pratica, la chiamata a FirstOrDefault() aggiunge quel TOP 1 all’SQL generato, che fa sì che venga ritornata solo una riga ritornata dal DB, falsando il conteggio. 
  &lt;br /&gt;I modi per risolvere la questione sono due: &lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Tornare ad usare la Criteria API :). &lt;/li&gt;

  &lt;li&gt;Sostituire &lt;font size="2" face="Courier New"&gt;FirstOrDefault&amp;lt;Band&amp;gt;()&lt;/font&gt; con &lt;font size="2" face="Courier New"&gt;ToList&amp;lt;Band&amp;gt;()[0]&lt;/font&gt;. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In questo modo, la clausola TOP sparisce e i Dire Straits tornano ad essere cinque: &lt;/p&gt;

&lt;p&gt;Nome band: Dire Straits, numero di componenti: 5&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Alby/aggbug/96827.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Alberto Dallagiacoma</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alby/archive/2009/08/05/linq2nhibernate-firstordefault-ehellip-i-dire-straits.aspx</guid>
            <pubDate>Wed, 05 Aug 2009 11:50:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alby/archive/2009/08/05/linq2nhibernate-firstordefault-ehellip-i-dire-straits.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alby/comments/commentRss/96827.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alby/services/trackbacks/96827.aspx</trackback:ping>
        </item>
        <item>
            <title>Rilasciato NHibernate 2.1.0</title>
            <link>http://blogs.ugidotnet.org/Alby/archive/2009/07/20/rilasciato-nhibernate-2.1.0.aspx</link>
            <description>&lt;p&gt;E’ stata rilasciata la &lt;a href="http://sourceforge.net/projects/nhibernate/"&gt;versione 2.1.0&lt;/a&gt; di &lt;a href="http://www.nhforge.org"&gt;NHibernate&lt;/a&gt;. Qualche novità:&lt;/p&gt;  &lt;p&gt;1. Supporto diretto a SQL Server 2008 (MSSql2008Dialect); NHibernate può usare i tipi di dato &lt;em&gt;Date&lt;/em&gt;, &lt;em&gt;Time&lt;/em&gt;, &lt;em&gt;DateTime2&lt;/em&gt;, &lt;em&gt;DateTimeOffset&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;2. Nuovi &lt;a href="http://feedproxy.google.com/~r/NHibernateBlog/~3/SZ1UkIBlTY4/nh2-1-0-new-generators.aspx"&gt;ID Generators&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;3. Executable HQL. E’ possibile scrivere una cosa del tipo:&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; (ISession session = GetSession())&lt;/pre&gt;

  &lt;pre&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;using&lt;/span&gt; (ITransaction tx = session.BeginTransaction())&lt;/pre&gt;

  &lt;pre&gt;    { &lt;/pre&gt;

  &lt;pre class="alt"&gt;        session.CreateQuery(&lt;span class="str"&gt;"delete from MyEntity"&lt;/span&gt;).ExecuteUpdate();  &lt;/pre&gt;

  &lt;pre&gt;        tx.Commit();&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;

  &lt;pre&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[




.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;

&lt;p&gt;4. Rimozione della dipendenza da Castle.DynamicProxy2 (informazioni &lt;a href="http://nhforge.org/blogs/nhibernate/archive/2008/10/11/nh2-1-0-reference-to-castle-removed.aspx"&gt;qui&lt;/a&gt; e &lt;a href="http://nhforge.org/blogs/nhibernate/archive/2008/11/09/nh2-1-0-bytecode-providers.aspx"&gt;qui&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;In ogni modo, la lettura del file releasenotes.txt è sempre consigliata.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Alby/aggbug/96730.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Alberto Dallagiacoma</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alby/archive/2009/07/20/rilasciato-nhibernate-2.1.0.aspx</guid>
            <pubDate>Mon, 20 Jul 2009 06:49:53 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alby/archive/2009/07/20/rilasciato-nhibernate-2.1.0.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alby/comments/commentRss/96730.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alby/services/trackbacks/96730.aspx</trackback:ping>
        </item>
        <item>
            <title>Aggiungere il link di &amp;quot;Rimuovi applicazione&amp;quot; nel setup project di Visual Studio 2008</title>
            <link>http://blogs.ugidotnet.org/Alby/archive/2008/12/30/95048.aspx</link>
            <description>&lt;p&gt;Ho creato un Setup Project per un'applicazione, e ho notato che non è così immediato aggiungere la voce "Rimuovi applicazione" come icona nel menù Start di Windows.&lt;/p&gt;  &lt;p&gt;L'ideale sarebbe creare un collegamento a &lt;font face="Courier New" size="2"&gt;msiexec.exe&lt;/font&gt; e fornire gli opportuni parametri per la disinstallazione, ma a quanto sembra, nel Setup Project di Visual Studio non è possibile referenziare tramite Shortcut un file non presente tra i files che compongono l'applicazione. Per ovviare a questo, ho aggiunto tra i files dell'applicazione un file &lt;font face="Courier New" size="2"&gt;Uninstall.bat&lt;/font&gt; contenente questi comandi:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" size="2"&gt;@echo off      &lt;br /&gt;msiexec /I {Product Code}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;dove &lt;em&gt;Product Code&lt;/em&gt; è un particolare GUID assegnato all'applicazione, che serve a Windows Installer per identificarla univocamente; lo si può trovare alla rispettiva voce tra le proprietà del progetto di setup.     &lt;br /&gt;Ora è possibile creare un collegamento a questo file, che si preoccuperà di eseguire il setup dell'applicazione in modalità "maintenance", permettendone la rimozione.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Alby/aggbug/95048.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Alberto Dallagiacoma</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alby/archive/2008/12/30/95048.aspx</guid>
            <pubDate>Tue, 30 Dec 2008 18:55:52 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alby/archive/2008/12/30/95048.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alby/comments/commentRss/95048.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alby/services/trackbacks/95048.aspx</trackback:ping>
        </item>
        <item>
            <title>XNA Game Studio 3.0</title>
            <link>http://blogs.ugidotnet.org/Alby/archive/2008/11/04/xna-game-studio-3.0.aspx</link>
            <description>&lt;p&gt;&lt;img style="MARGIN: 0px 10px 0px 0px" align="left" alt="" src="http://creators.xna.com/en-US/assets/images/global/shell_default/cco_shell_default_header_xna_logo_print.jpg" /&gt; Ok, è ufficiale: la mia vita sociale potrebbe essere seriamente compromessa. Con il rilascio di &lt;a target="_blank" href="http://creators.xna.com/en-US/xnags_islive"&gt;XNA Game Studio 3.0&lt;/a&gt;, la mia passione per i videogiochi potebbe unirsi alla mia passione per la programmazione, producendo risultati imprevedibili.&lt;/p&gt;
&lt;p&gt;Qualcuno in casa mia è già preoccupato, ma prometto che cercherò di controllarmi... &lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Alby/aggbug/94517.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Alberto Dallagiacoma</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alby/archive/2008/11/04/xna-game-studio-3.0.aspx</guid>
            <pubDate>Tue, 04 Nov 2008 18:30:29 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alby/archive/2008/11/04/xna-game-studio-3.0.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alby/comments/commentRss/94517.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alby/services/trackbacks/94517.aspx</trackback:ping>
        </item>
        <item>
            <title>&amp;quot;Strumenti per la luce d'argento&amp;quot;</title>
            <link>http://blogs.ugidotnet.org/Alby/archive/2008/10/31/quotstrumenti-per-la-luce-dargentoquot.aspx</link>
            <description>&lt;p&gt;&lt;img style="margin: 0px 10px 0px 0px" src="http://www.microsoft.com/silverlight/images/logo.png" align="left" /&gt; Sono stati rilasciati i Silverlight Tools per Visual Studio 2008 SP1, i quali erano in beta al momento del rilascio di Silverlight 2.0.&lt;/p&gt;  &lt;p&gt;Il pacchetto completo si può scaricare &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=c22d6a7b-546f-4407-8ef6-d60c8ee221ed&amp;amp;displaylang=en" target="_blank"&gt;qui&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Vediamo se adesso anch'io riesco a far brillare la "luce d'argento". &lt;img alt="" src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/teeth_smile.gif" /&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Alby/aggbug/94475.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Alberto Dallagiacoma</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alby/archive/2008/10/31/quotstrumenti-per-la-luce-dargentoquot.aspx</guid>
            <pubDate>Fri, 31 Oct 2008 17:59:01 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alby/archive/2008/10/31/quotstrumenti-per-la-luce-dargentoquot.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alby/comments/commentRss/94475.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alby/services/trackbacks/94475.aspx</trackback:ping>
        </item>
        <item>
            <title>Expand/Collapse All in Visual Studio 2008</title>
            <link>http://blogs.ugidotnet.org/Alby/archive/2008/07/22/expandcollapse-all-in-visual-studio-2008.aspx</link>
            <description>&lt;p&gt;Oggi ho scaricato l'ultima drop di &lt;a href="http://www.codeplex.com/NSK" target="_blank"&gt;NSK&lt;/a&gt; e, tra &lt;a href="http://en.wikipedia.org/wiki/Model_View_Presenter" target="_blank"&gt;MVP&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Model_View_Controller" target="_blank"&gt;MVC&lt;/a&gt;, &lt;a href="http://www.nunit.org" target="_blank"&gt;NUnit&lt;/a&gt; Tests, MSTest e compagnia bella, il numero di progetti che compongono la solution inizia ad essere consistente.     &lt;br /&gt;Con un tale numero di projects, si sente la mancanza in Visual Studio della possibilità di espandere/chiudere in un solo colpo tutto il "tree" della solution.    &lt;br /&gt;Una rapida ricerca su Google mi ha portato a questo link:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://it.toolbox.com/blogs/think-clients/visual-studio-macro-collapse-solution-explorer-18035" href="http://it.toolbox.com/blogs/think-clients/visual-studio-macro-collapse-solution-explorer-18035"&gt;http://it.toolbox.com/blogs/think-clients/visual-studio-macro-collapse-solution-explorer-18035&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;dove ho trovato una macro utile allo scopo.&lt;/p&gt;  &lt;p&gt;Su &lt;a href="http://connect.microsoft.com/" target="_blank"&gt;Connect&lt;/a&gt; qualcuno &lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=106040" target="_blank"&gt;ha già fatto notare la mancanza&lt;/a&gt;: secondo me sarebbe una funzionalità molto utile.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Alby/aggbug/93498.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Alberto Dallagiacoma</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alby/archive/2008/07/22/expandcollapse-all-in-visual-studio-2008.aspx</guid>
            <pubDate>Tue, 22 Jul 2008 10:57:42 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alby/archive/2008/07/22/expandcollapse-all-in-visual-studio-2008.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alby/comments/commentRss/93498.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alby/services/trackbacks/93498.aspx</trackback:ping>
        </item>
        <item>
            <title>Community Days - The day after</title>
            <link>http://blogs.ugidotnet.org/Alby/archive/2008/07/11/community-days---the-day-after.aspx</link>
            <description>&lt;p&gt;Ragazzi, così mi viziate! &lt;/p&gt;
&lt;p&gt;Leggendo le considerazioni di tutti, è difficile trovare qualcos'altro da dire, ma non posso esimermi dal dire che sono stati due giorni "stréordinéri" (cit.).&lt;/p&gt;
&lt;p&gt;Inizio subito con un "Thumbs Up" &lt;img alt="" src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/thumbs_up.gif" /&gt;&lt;img alt="" src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/thumbs_up.gif" /&gt; grosso così per la sessione BOF di &lt;a target="_blank" href="http://blogs.ugidotnet.org/RobyMes"&gt;Roberto&lt;/a&gt;: per quanto mi riguarda, già quella valeva la partecipazione alla prima giornata. &lt;br /&gt;
Per il resto, mi sono dato un target più architetturale (come spesso mi accade ultimamente) che pratico, pur perdendo le sessioni su &lt;a target="_blank" href="http://www.communitydays.it/events/communitydays2008milano/sp1303.aspx"&gt;WPF SP1&lt;/a&gt; di &lt;a target="_blank" href="http://blogs.ugidotnet.org/Corrado"&gt;Corrado&lt;/a&gt; o quella su &lt;a target="_blank" href="http://www.communitydays.it/events/communitydays2008milano/app305.aspx"&gt;applicazioni Web Service-based&lt;/a&gt; di &lt;a target="_blank" href="http://blogs.aspitalia.com/SM15455"&gt;Stefano&lt;/a&gt;, che mi avrebbero ugualmente interessato. Come "fuori programma" ho fatto un'interessante chiacchierata su &lt;a target="_blank" href="http://www.mono-project.com"&gt;Mono&lt;/a&gt; con &lt;a target="_blank" href="http://primates.ximian.com/~massi/blog"&gt;Massimiliano Mantione&lt;/a&gt;, persona veramente disponibilissima.&lt;/p&gt;
&lt;p&gt;E una volta tanto sono riuscito a partecipare alla cena (ebbene sì, la mia prima cena di community), che mi ha permesso di conoscere di persona molti ragazzi della "truppa" di UGI.&lt;/p&gt;
&lt;p&gt;Tra tante belle cose, un rammarico ce l'ho: aver saltato la sessione finale di Q&amp;amp;A, ma putroppo il treno non aspettava... &lt;img alt="" src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/sad_smile.gif" /&gt;&lt;/p&gt;
&lt;p&gt;Grazie a tutti, davvero!&lt;/p&gt;
&lt;p&gt;P.S. &lt;br /&gt;
Quoto &lt;a target="_blank" href="http://blogs.ugidotnet.org/pape"&gt;Andrea&lt;/a&gt; sulla panna cotta: ha vinto il "Community Days Award" come miglior dolce della manifestazione. &lt;img alt="" src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/tounge_smile.gif" /&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Alby/aggbug/93363.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Alberto Dallagiacoma</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alby/archive/2008/07/11/community-days---the-day-after.aspx</guid>
            <pubDate>Fri, 11 Jul 2008 12:20:06 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alby/archive/2008/07/11/community-days---the-day-after.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alby/comments/commentRss/93363.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alby/services/trackbacks/93363.aspx</trackback:ping>
        </item>
        <item>
            <title>Come si crea una Mobile Web Application in VS 2008?</title>
            <link>http://blogs.ugidotnet.org/Alby/archive/2008/06/24/come-si-crea-una-mobile-web-application-in-vs-2008.aspx</link>
            <description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;Ci ho fatto caso solamente oggi: tra i template disponibili in Visual Studio 2008 non è presente quello per le Mobile Web Applications.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/webdevtools" target="_blank"&gt;Il team di Visual Web Developer&lt;/a&gt; ha però messo a disposizione i template aggiuntivi per questo tipo di applicazioni; le informazioni in &lt;a href="http://blogs.msdn.com/webdevtools/archive/2007/09/17/tip-trick-asp-net-mobile-development-with-visual-studio-2008.aspx" target="_blank"&gt;questo post&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Come spiegato, la nuova architettura del designer di VS 2008 non permette di creare una Mobile Web Form in "Design View", ma solo in "Source View".&lt;/p&gt;  &lt;p&gt;Trovo comunque assurdo che si stato tolto il supporto visuale alle Mobile Web Forms. Chissà se il SP1 sistemerà qualcosa...&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Alby/aggbug/93152.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Alberto Dallagiacoma</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alby/archive/2008/06/24/come-si-crea-una-mobile-web-application-in-vs-2008.aspx</guid>
            <pubDate>Tue, 24 Jun 2008 13:14:03 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alby/archive/2008/06/24/come-si-crea-una-mobile-web-application-in-vs-2008.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alby/comments/commentRss/93152.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alby/services/trackbacks/93152.aspx</trackback:ping>
        </item>
        <item>
            <title>Nullables</title>
            <link>http://blogs.ugidotnet.org/Alby/archive/2008/05/05/nullables.aspx</link>
            <description>&lt;p&gt;Due cose carine sui &lt;a href="http://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx"&gt;Nullable Types&lt;/a&gt; che mi segno, in caso di utilizzi futuri.&lt;/p&gt;
&lt;p&gt;Per verificare se un tipo è Nullable:&lt;/p&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;bool&lt;/span&gt; IsANullableType(Type type)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; (type.IsGenericType &amp;amp;&amp;amp; &lt;/pre&gt;
&lt;pre class="alt"&gt;		type.GetGenericTypeDefinition().Equals(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(Nullable&amp;lt;&amp;gt;))&lt;/pre&gt;
&lt;pre class="alt"&gt;		);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Per sapere il corrispondente "Non Nullable" di un Nullable Type:&lt;/p&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;NullableConverter nc = &lt;span class="kwrd"&gt;new&lt;/span&gt; NullableConverter(&lt;span class="kwrd"&gt;int&lt;/span&gt;?);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;Type notNullableType = nc.UnderlyingType; // notNullableType è int&lt;/pre&gt;
&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/Alby/aggbug/92519.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Alberto Dallagiacoma</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alby/archive/2008/05/05/nullables.aspx</guid>
            <pubDate>Mon, 05 May 2008 14:25:10 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alby/archive/2008/05/05/nullables.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alby/comments/commentRss/92519.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alby/services/trackbacks/92519.aspx</trackback:ping>
        </item>
    </channel>
</rss>