<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>NHibernate</title>
        <link>http://blogs.ugidotnet.org/leonardo/category/NHibernate.aspx</link>
        <description>NHibernate ORM</description>
        <language>it</language>
        <copyright>Leonardo</copyright>
        <generator>Subtext Version 2.6.0.0</generator>
        <item>
            <title>NHibernate 3.0 RTM e Medium Trust</title>
            <link>http://blogs.ugidotnet.org/leonardo/archive/2010/12/09/nhibernate-3.0-rtm-e-medium-trust.aspx</link>
            <description>&lt;p&gt;&lt;strong&gt;&lt;u&gt;Update 18/05/2011:&lt;/u&gt;&lt;/strong&gt; Scarica la versione di &lt;font face="Arial"&gt;&lt;a href="http://cid-7996fa031700f3fe.office.live.com/self.aspx/Pubblica/NHibernate-3.1.0.GA-LinFu-1.0.3.28303%20Medium%20Trust.zip"&gt;NHibernate-3.1.0.GA compilata con LinFu-1.0.3.28303&lt;/a&gt; compatibile con Medium Trust (leggere comunque il resto l'articolo per modificare il file di configurazione)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://nhforge.org/Default.aspx"&gt;NHibernate 3.0&lt;/a&gt; è finalmente stato rilasciato in versione finale ma purtroppo presenta qualche problema con hosting Medium Trust (e quindi i siti in hosting su Aruba), vediamo come ricompilare il nostro ORM per renderlo finalmente funzionante anche in tali condizioni.&lt;/p&gt;
&lt;p&gt;Premetto che non dobbiamo modificare il sorgente di NHibernate ma semplicemente ricompilarlo con le nuove versioni delle librerie &lt;a href="http://code.google.com/p/linfu/"&gt;LinFu&lt;/a&gt; e &lt;a href="http://relinq.codeplex.com/"&gt;RemotionRelinq&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Scarichiamo: &lt;br /&gt;
- i &lt;a href="http://sourceforge.net/projects/nhibernate/files/NHibernate/3.0.0.GA/NHibernate-3.0.0.GA-src.zip/download"&gt;sorgenti di NHibernate 3.0GA&lt;/a&gt;  &lt;br /&gt;
- &lt;a href="http://linfu.googlecode.com/files/LinFu.DynamicProxy-1.031-release.zip"&gt;LinFu.DynamicProxy 1.031&lt;/a&gt; &lt;br /&gt;
- &lt;a href="https://www.re-motion.org/builds/RemotionRelinq_1.13.84.zip"&gt;RemotionRelinq  1.13.84&lt;/a&gt; (o comunque una versione successiva alla 1.13.63, le versioni con l’ultimo numero pari sono più stabili) &lt;br /&gt;
- &lt;a href="http://downloads.sourceforge.net/project/nant/nant/0.90/nant-0.90-bin.zip?r=&amp;amp;ts=1291674057&amp;amp;use_mirror=freefr"&gt;NAnt 0.90&lt;/a&gt; ci servirà per compilare il tutto&lt;/p&gt;
&lt;p&gt;Come primo passo scompattiamo i sorgenti di NHibernate e al loro interno scompattiamo NAnt che sarà quindi contenuto dentro alla cartella nant-0.90. &lt;br /&gt;
Creiamo ora il file “Build.bat” che ci permetterà di compilare tramite NAnt col seguente contenuto:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;@nant-0.90\bin\NAnt.exe -t:net-3.5 -D:project.config=release clean package &lt;br /&gt;
pause&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Prima di lanciare la compilazione però andiamo a copiare nella cartella lib/net/3.5 dei sorgenti di NHibernate il file LinFu.DynamicProxy.dll contenuto nel secondo download e il file Remotion.Data.Linq.dll contenuto nella cartella net-3.5/bin/release del terzo download.&lt;/p&gt;
&lt;p&gt;Lanciamo adesso il file Build.bat creato in precedenza e aspettando qualche secondo troveremo la cartella build che conterrà al suo interno il nostro NHibernate pronto per essere utilizzato in ambienti Medium Trust.&lt;/p&gt;
&lt;p&gt;NB: La compilazione della documentazione potrebbe fallire ma ciò non influisce sulla compilazione delle dll.&lt;/p&gt;
&lt;p&gt;Per poter utilizzare NHibernate in ambienti Medium Trust nel file di configurazione App.config dobbiamo ricordarci di specificare requirePermission="false" nelle sezioni di configurazione di NHibernate e Log4Net. Esempio:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;lt;configuration&amp;gt; &lt;br /&gt;
    &amp;lt;configSections&amp;gt; &lt;br /&gt;
        &amp;lt;section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" requirePermission="false"/&amp;gt; &lt;br /&gt;
        &amp;lt;section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/&amp;gt; &lt;br /&gt;
    &amp;lt;/configSections&amp;gt; &lt;br /&gt;
...&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Mentre nella hibernate-configuration dobbiamo specificare reflection-optimizer use="false" e come proxyfactory Linfu&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;lt;hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"&amp;gt; &lt;br /&gt;
    &amp;lt;reflection-optimizer use="false"/&amp;gt; &lt;br /&gt;
    &amp;lt;session-factory&amp;gt; &lt;br /&gt;
        ... &lt;br /&gt;
        &amp;lt;property name="proxyfactory.factory_class"&amp;gt;NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu&amp;lt;/property&amp;gt; &lt;br /&gt;
        ... &lt;br /&gt;
    &amp;lt;/session-factory&amp;gt; &lt;br /&gt;
&amp;lt;/hibernate-configuration&amp;gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;That’s all!&lt;/p&gt;
&lt;p&gt;Voglio infine ringraziare &lt;a href="http://www.padovaboy.it/"&gt;Padova Boy&lt;/a&gt; per l'&lt;a href="http://www.padovaboy.it/blog/post.aspx?ID=32"&gt;eccellente articolo&lt;/a&gt; su come utilizzare NHibernate 2.1.2 in ambienti Medium Trust.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/leonardo/aggbug/99544.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Leonardo</dc:creator>
            <guid>http://blogs.ugidotnet.org/leonardo/archive/2010/12/09/nhibernate-3.0-rtm-e-medium-trust.aspx</guid>
            <pubDate>Thu, 09 Dec 2010 21:35:19 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/leonardo/archive/2010/12/09/nhibernate-3.0-rtm-e-medium-trust.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/leonardo/comments/commentRss/99544.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/leonardo/services/trackbacks/99544.aspx</trackback:ping>
        </item>
        <item>
            <title>NHibernate 3</title>
            <link>http://blogs.ugidotnet.org/leonardo/archive/2010/07/30/nhibernate-3.aspx</link>
            <description>&lt;p&gt;NHibernate, famoso ORM per .NET ha raggiunto lo stadio &lt;u&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt;&lt;/u&gt; RTM per la terza release. &lt;/p&gt;
&lt;p&gt;Tante le novità, quelle che ho trovato personalmente più utili sono la compatibilità con l’esecuzione Medium Trust in applicazioni web ASP.NET (niente più ricompilazioni con modifiche apposite ad ogni nuova versione, evviva!) ed un nuovo supporto a LINQ totalmente riscritto per una maggiore flessibilità.&lt;/p&gt;
&lt;p&gt;UPDATE: Purtroppo Medium Trust è supportato completamente in NHibernate.dll ma non in alcune librerie distribuite assieme alla versione finale. Per risolvere il problema leggere l'articolo &lt;a href="http://blogs.ugidotnet.org/leonardo/archive/2010/12/09/nhibernate-3.0-rtm-e-medium-trust.aspx"&gt;NHibernate 3 e Medium Trust&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Le modifiche da apportare per provare il supporto a LINQ della nuova versione sono solamente il cambio di un paio di righe di codice:&lt;/p&gt;
&lt;p&gt;NHibernate 2.x&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/leonardo/WindowsLiveWriter/NHibernate3_11A1/NHibernateOldLinq_2.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="NHibernateOldLinq" border="0" alt="NHibernateOldLinq" width="415" height="117" complete="" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/leonardo/WindowsLiveWriter/NHibernate3_11A1/NHibernateOldLinq_thumb.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;NHibernate 3.x&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/leonardo/WindowsLiveWriter/NHibernate3_11A1/NHibernateNewLinq_2.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="NHibernateNewLinq" border="0" alt="NHibernateNewLinq" width="410" height="81" complete="" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/leonardo/WindowsLiveWriter/NHibernate3_11A1/NHibernateNewLinq_thumb.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Il nuovo supporto rende inoltre possibile scrivere query come:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/leonardo/WindowsLiveWriter/NHibernate3_11A1/NHibernateLinqDateYear_2.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="NHibernateLinqDateYear" border="0" alt="NHibernateLinqDateYear" width="273" height="65" complete="" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/leonardo/WindowsLiveWriter/NHibernate3_11A1/NHibernateLinqDateYear_thumb.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Verrà prodotta in automatico la query &lt;em&gt;SELECT * FROM Events WHERE YEAR(Date)=2009&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NB:&lt;/strong&gt; La query è stata abbreviata sostituendo tutti i nomi dei campi con l’asterisco e inserendo direttamente l’anno che in realtà viene passato come parametro per renderla più corta e leggibile in questo articolo.&lt;/p&gt;
&lt;p&gt;Fino alla versione 2.x scrivere una query equivalente richiedeva l’utilizzo di codice SQL (nativo o tramite ICriteria) o HSQL.&lt;/p&gt;
&lt;p&gt;Potete scaricare questa nuova versione all’indirizzo &lt;a href="http://sourceforge.net/projects/nhibernate"&gt;http://sourceforge.net/projects/nhibernate&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/leonardo/aggbug/99019.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Leonardo</dc:creator>
            <guid>http://blogs.ugidotnet.org/leonardo/archive/2010/07/30/nhibernate-3.aspx</guid>
            <pubDate>Fri, 30 Jul 2010 02:14:59 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/leonardo/archive/2010/07/30/nhibernate-3.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/leonardo/comments/commentRss/99019.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/leonardo/services/trackbacks/99019.aspx</trackback:ping>
        </item>
    </channel>
</rss>