<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">
    <channel>
        <title>AlbLog - Il blog di Alberto Dallagiacoma</title>
        <link>http://blogs.ugidotnet.org/Alby/Default.aspx</link>
        <description>Scherzando si può dire di tutto, anche la verità. (S. Freud)</description>
        <language>it-IT</language>
        <copyright>Alberto Dallagiacoma</copyright>
        <generator>Subtext Version 2.1.0.3</generator>
        <image>
            <title>AlbLog - Il blog di Alberto Dallagiacoma</title>
            <url>http://blogs.ugidotnet.org/images/RSS2Image.gif</url>
            <link>http://blogs.ugidotnet.org/Alby/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/AlbertoDallagiacoma" type="application/rss+xml" /><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FAlbertoDallagiacoma" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FAlbertoDallagiacoma" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FAlbertoDallagiacoma" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FAlbertoDallagiacoma" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
            <title>Software installato e PowerShell</title>
            <link>http://blogs.ugidotnet.org/Alby/archive/2009/11/15/software-installato-e-powershell.aspx</link>
            <description>&lt;p&gt;Tempo fa avevo scritto &lt;a href="http://blogs.ugidotnet.org/Alby/archive/2009/08/17/ora-che-cosa-devo-installare.aspx" target="_blank"&gt;un post&lt;/a&gt; che mostrava come ricavare l’elenco del software installato tramite WMI, con la limitazione, però, di poter avere solo l’elenco di tutto cio che è stato installato tramite &lt;a href="http://en.wikipedia.org/wiki/Windows_Installer" target="_blank"&gt;Windows Installer&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Ho trovato metodi alternativi per ottenere lo stesso risultato, che sfruttano la potenza di &lt;a href="http://technet.microsoft.com/en-us/scriptcenter/dd742419.aspx" target="_blank"&gt;PowerShell&lt;/a&gt; e permettono anche di scegliere il formato di output che più ci piace:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://myitforum.com/cs2/blogs/yli628/archive/2008/01/16/powershell-script-to-list-installed-software-on-local-computer.aspx" target="_blank"&gt;Foglio di Excel&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/powershell/archive/2009/11/15/i-can-do-that-with-1-line-of-powershell-installed-software.aspx" target="_blank"&gt;GridView&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;File di testo:     &lt;br /&gt;      &lt;br /&gt;&lt;font size="2" face="Courier New"&gt;PS&amp;gt; gp HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*        &lt;br /&gt;| Select DisplayName, DisplayVersion, Publisher, InstallDate, UninstallString         &lt;br /&gt;| Out-File 'installed-sw.txt'&lt;/font&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.ugidotnet.org/Alby/aggbug/97523.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/AlbertoDallagiacoma/~4/4hgjK-bAjgI" height="1" width="1"/&gt;</description>
            <dc:creator>Alberto Dallagiacoma</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alby/archive/2009/11/15/software-installato-e-powershell.aspx</guid>
            <pubDate>Sun, 15 Nov 2009 22:21:10 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/Alby/comments/97523.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/Alby/archive/2009/11/15/software-installato-e-powershell.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alby/comments/commentRss/97523.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alby/services/trackbacks/97523.aspx</trackback:ping>
        </item>
        <item>
            <title>Tabelle temporanee e variabili di tipo TABLE</title>
            <category>Database</category>
            <link>http://blogs.ugidotnet.org/Alby/archive/2009/11/11/tabelle-temporanee-e-variabili-di-tipo-table.aspx</link>
            <description>&lt;p&gt; In SQL Server ci sono due modi per creare una tabella temporanea:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Appoggiarsi al &lt;a href="http://technet.microsoft.com/en-us/library/ms190768.aspx"&gt;tempdb&lt;/a&gt;: &lt;br /&gt;
    &lt;br /&gt;
    CREATE TABLE #TempTable(Field1 int, Field2 varchar(10)) &lt;br /&gt;
    INSERT INTO #TempTable(Field1, Field2) VALUES (42, 'Alberto') &lt;br /&gt;
    SELECT * FROM #TempTable &lt;br /&gt;
    &lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;Utilizzare una &lt;a href="http://msdn.microsoft.com/en-us/library/ms175010.aspx"&gt;variabile di tipo TABLE&lt;/a&gt;: &lt;br /&gt;
    &lt;br /&gt;
    DECLARE @TempTable TABLE (Field1 int, Field2 varchar(10)) &lt;br /&gt;
    INSERT INTO @TempTable(Field1, Field2) VALUES(42, 'Alberto') &lt;br /&gt;
    SELECT * FROM @TempTable&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Sebbene i due modi si assomiglino molto, in realtà alcune differenze ci sono, e sono ben riassunte in &lt;a target="_blank" href="http://blogs.msdn.com/sqlserverstorageengine/archive/2008/03/30/sql-server-table-variable-vs-local-temporary-table.aspx"&gt;questo post&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Alby/aggbug/97499.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/AlbertoDallagiacoma/~4/b6oFM4um2ro" height="1" width="1"/&gt;</description>
            <dc:creator>Alberto Dallagiacoma</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alby/archive/2009/11/11/tabelle-temporanee-e-variabili-di-tipo-table.aspx</guid>
            <pubDate>Wed, 11 Nov 2009 15:42:00 GMT</pubDate>
            <wfw:comment>http://blogs.ugidotnet.org/Alby/comments/97499.aspx</wfw:comment>
            <comments>http://blogs.ugidotnet.org/Alby/archive/2009/11/11/tabelle-temporanee-e-variabili-di-tipo-table.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alby/comments/commentRss/97499.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alby/services/trackbacks/97499.aspx</trackback:ping>
        </item>
        <item>
            <title>&amp;ldquo;Un Po di .NET&amp;rdquo; a Monticelli d&amp;rsquo;Ongina (PC)</title>
            <category>DotDotNet</category>
            <link>http://blogs.ugidotnet.org/Alby/archive/2009/09/17/ldquoun-po-di-.netrdquo-a-monticelli-drsquoongina.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Alby/WindowsLiveWriter/UnPodi.NETaMonticellidOngina_8459/DotDotNetLogo_2.png"&gt;&lt;img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="DotDotNetLogo" border="0" alt="DotDotNetLogo" width="240" height="92" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Alby/WindowsLiveWriter/UnPodi.NETaMonticellidOngina_8459/DotDotNetLogo_thumb.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Ecco gli argomenti che tratterò al &lt;a target="_blank" href="http://www.dotdotnet.org/events/09-07-30/Un_PO_di_NET_-_Golosone_NET.aspx"&gt;workshop&lt;/a&gt;:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;IoC e Dependency Injection
    &lt;ol&gt;
        &lt;li&gt;Di cosa si tratta. &lt;/li&gt;
        &lt;li&gt;StructureMap e Unity.&lt;/li&gt;
        &lt;li&gt;Pattern “Service Locator”. &lt;br /&gt;
        &lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
    &lt;li&gt;O/RM e persistenza
    &lt;ol&gt;
        &lt;li&gt;Pattern “Repository”.&lt;/li&gt;
        &lt;li&gt;Pattern “Unit of Work”&lt;/li&gt;
        &lt;li&gt;Persistenza con NHibernate.&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Per chi volesse fare un salto, &lt;a target="_blank" href="http://www.canottieriongina.net/"&gt;ci vediamo là&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Alby/aggbug/97064.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/AlbertoDallagiacoma/~4/yZ6OOxTSGbM" height="1" width="1"/&gt;</description>
            <dc:creator>Alberto Dallagiacoma</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alby/archive/2009/09/17/ldquoun-po-di-.netrdquo-a-monticelli-drsquoongina.aspx</guid>
            <pubDate>Thu, 17 Sep 2009 09:45:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alby/archive/2009/09/17/ldquoun-po-di-.netrdquo-a-monticelli-drsquoongina.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alby/comments/commentRss/97064.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alby/services/trackbacks/97064.aspx</trackback:ping>
        </item>
        <item>
            <title>Sconto per TechDays-WPC ai soci DotDotNet</title>
            <category>DotDotNet</category>
            <link>http://blogs.ugidotnet.org/Alby/archive/2009/09/08/sconto-per-techdays-wpc-ai-soci-dotdotnet.aspx</link>
            <description>&lt;p&gt;Dal  24 al 26 novembre 2009 si svolgeranno a Milano i &lt;a target="_blank" href="http://techdays-wpc.it/"&gt;TechDays-WPC&lt;/a&gt;, la maggiore conferenza ICT italiana dedicata al mondo Microsoft. &lt;br /&gt;
Per i soci &lt;a href="http://www.dotdotnet.org"&gt;DotDotNet&lt;/a&gt; è previsto uno sconto di 50 € sul prezzo di iscrizione; chi fosse interessato alla cosa, può inviare una mail a &lt;a href="mailto:info@dotdotnet.org"&gt;info@dotdotnet.org&lt;/a&gt; per sapere come usufruire del benefit.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Alby/aggbug/97018.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/AlbertoDallagiacoma/~4/Q8PNc7Pnchg" height="1" width="1"/&gt;</description>
            <dc:creator>Alberto Dallagiacoma</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alby/archive/2009/09/08/sconto-per-techdays-wpc-ai-soci-dotdotnet.aspx</guid>
            <pubDate>Tue, 08 Sep 2009 12:00:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alby/archive/2009/09/08/sconto-per-techdays-wpc-ai-soci-dotdotnet.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alby/comments/commentRss/97018.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alby/services/trackbacks/97018.aspx</trackback:ping>
        </item>
        <item>
            <title>Ora, che cosa devo installare?</title>
            <category>Systems</category>
            <link>http://blogs.ugidotnet.org/Alby/archive/2009/08/17/ora-che-cosa-devo-installare.aspx</link>
            <description>&lt;p&gt;Quando si aggiorna il sistema operativo, oppure si dà una “sana rinfrescata” (cioè si pialla l’hard disk… &lt;img alt="" src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/teeth_smile.gif" /&gt;) alla propria installazione, ci tocca poi dover reinstallare tutta quella montagna di software che abbiamo installato nel tempo, e che è sempre difficile da ricordare. &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/aa394582(VS.85).aspx"&gt;WMI&lt;/a&gt; ci può dare una mano; tramite il comando:&lt;/p&gt;
&lt;p&gt;&lt;font size="2" face="Courier New"&gt;wmic product&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;otteniamo un pratico elenco di tutto il sotware installato tramite Windows Installer, da poter utilizzare in seguito come promemoria. E' vero, non è la totalità del software, ma è comunque utile.&lt;/p&gt;
&lt;p&gt;Sì, è vero, sto per installare &lt;a target="_blank" href="http://www.microsoft.com/windows/windows-7/"&gt;Windows 7&lt;/a&gt;… &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/96872.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/AlbertoDallagiacoma/~4/Jmu9YMQrvvA" height="1" width="1"/&gt;</description>
            <dc:creator>Alberto Dallagiacoma</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alby/archive/2009/08/17/ora-che-cosa-devo-installare.aspx</guid>
            <pubDate>Mon, 17 Aug 2009 20:00:39 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alby/archive/2009/08/17/ora-che-cosa-devo-installare.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alby/comments/commentRss/96872.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alby/services/trackbacks/96872.aspx</trackback:ping>
        </item>
        <item>
            <title>Linq2NHibernate, FirstOrDefault e&amp;hellip; I Dire Straits</title>
            <category>.NET Development</category>
            <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;&lt;img src="http://feeds.feedburner.com/~r/AlbertoDallagiacoma/~4/qUEddpNyy3c" height="1" width="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>
            <category>.NET Development</category>
            <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;&lt;img src="http://feeds.feedburner.com/~r/AlbertoDallagiacoma/~4/CimNIFyM3Xg" height="1" width="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>Sorpresone!</title>
            <link>http://blogs.ugidotnet.org/Alby/archive/2009/04/30/sorpresone.aspx</link>
            <description>&lt;p&gt;Sono andato su &lt;a href="http://msdn.microsoft.com/subscriptions" target="_blank"&gt;MSDN Subscriptions&lt;/a&gt; per scaricare la RC di Windows 7, ma qui c’è anche qualcos’altro…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Alby/WindowsLiveWriter/Sorpresone_124EC/Sorpresone_2.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Sorpresone" border="0" alt="Sorpresone" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Alby/WindowsLiveWriter/Sorpresone_124EC/Sorpresone_thumb.png" width="483" height="138" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Let’s download!&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Alby/aggbug/96085.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/AlbertoDallagiacoma/~4/vdwURrDB1Io" height="1" width="1"/&gt;</description>
            <dc:creator>Alberto Dallagiacoma</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alby/archive/2009/04/30/sorpresone.aspx</guid>
            <pubDate>Thu, 30 Apr 2009 18:49:47 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alby/archive/2009/04/30/sorpresone.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alby/comments/commentRss/96085.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alby/services/trackbacks/96085.aspx</trackback:ping>
        </item>
        <item>
            <title>[OT] La matematica non &amp;egrave; un&amp;rsquo;opinione - 2</title>
            <category>Free</category>
            <link>http://blogs.ugidotnet.org/Alby/archive/2009/04/30/ot-la-matematica-non-egrave-unrsquoopinione-2.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Alby/WindowsLiveWriter/OTLamatematicanonunopinione2_B426/Matematica_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Matematica" border="0" alt="Matematica" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/Alby/WindowsLiveWriter/OTLamatematicanonunopinione2_B426/Matematica_thumb.jpg" width="350" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Alby/aggbug/96081.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/AlbertoDallagiacoma/~4/Yhqfs24Wc_E" height="1" width="1"/&gt;</description>
            <dc:creator>Alberto Dallagiacoma</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alby/archive/2009/04/30/ot-la-matematica-non-egrave-unrsquoopinione-2.aspx</guid>
            <pubDate>Thu, 30 Apr 2009 10:48:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alby/archive/2009/04/30/ot-la-matematica-non-egrave-unrsquoopinione-2.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alby/comments/commentRss/96081.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alby/services/trackbacks/96081.aspx</trackback:ping>
        </item>
        <item>
            <title>IIS e indirizzi IP</title>
            <category>Systems</category>
            <link>http://blogs.ugidotnet.org/Alby/archive/2009/03/18/iis-e-indirizzi-ip.aspx</link>
            <description>&lt;p&gt;IIS ha il brutto vizio di “mettersi in ascolto” su tutti gli indirizzi IP della macchina sulla quale è installato. Se ad esempio ho un server con più schede di rete, oppure con una sola scheda di rete ma con più indirizzi IP assegnati, automaticamente IIS si accaparra tutti gli indirizzi IP per i fatti suoi.&lt;/p&gt;
&lt;p&gt;Questo comportamento non va bene nel caso si volessero dedicare gli indirizzi IP a servizi diversi (ad esempio, due web server sulla stessa macchina, ognuno con un indirizzo IP specifico), ma fortunatamente è configurabile tramite un paio di comandi impartiti da un prompt con permessi amministrativi. Su IIS 6: &lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Impediamo a IIS di mettersi in ascolto su tutti gli indirizzi: &lt;br /&gt;
    &lt;font face="Courier New" size="2"&gt;httpcfg delete iplisten -i 0.0.0.0&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;Dedichiamo ad IIS un indirizzo IP specifico: &lt;br /&gt;
    &lt;font face="Courier New" size="2"&gt;httpcfg set iplisten –i &lt;em&gt;&amp;lt;indirizzo IP specifico per IIS&amp;gt;&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;Vediamo cosa abbiamo combinato &lt;img alt="" src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/regular_smile.gif" /&gt;: &lt;br /&gt;
    &lt;font face="Courier New" size="2"&gt;httpcfg query iplisten&lt;/font&gt; &lt;br /&gt;
    Verrà visualizzato solo l’indirizzo IP assegnato manualmente ad IIS. A questo punto bisogna riavviare il server &lt;img alt="" src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/sad_smile.gif" /&gt;. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Su IIS 7 è più o meno la stessa cosa, solo che le funzionalità di &lt;font face="Courier New" size="2"&gt;httpcfg.exe&lt;/font&gt; sono state spostate all’interno del comando &lt;font face="Courier New" size="2"&gt;netsh&lt;/font&gt;, quindi: &lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;font face="Courier New" size="2"&gt;netsh http add iplisten &lt;em&gt;&amp;lt;indirizzo IP specifico per IIS&amp;gt;&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;Un controllino non fa mai male &lt;img alt="" src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/regular_smile.gif" /&gt;: &lt;br /&gt;
    &lt;font face="Courier New" size="2"&gt;netsh http show iplisten&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Courier New" size="2"&gt;iisreset&lt;/font&gt; &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In questo modo solo l’indirizzo IP specificato è dedicato ad IIS, e possiamo utilizzare i rimanenti indirizzi per altri scopi.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/Alby/aggbug/95730.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/AlbertoDallagiacoma/~4/izVnQtTZ2ek" height="1" width="1"/&gt;</description>
            <dc:creator>Alberto Dallagiacoma</dc:creator>
            <guid>http://blogs.ugidotnet.org/Alby/archive/2009/03/18/iis-e-indirizzi-ip.aspx</guid>
            <pubDate>Wed, 18 Mar 2009 11:43:58 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/Alby/archive/2009/03/18/iis-e-indirizzi-ip.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/Alby/comments/commentRss/95730.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/Alby/services/trackbacks/95730.aspx</trackback:ping>
        </item>
    </channel>
</rss>
