<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/rgm/category/2868.aspx</link>
        <description>NHibernate</description>
        <language>it-IT</language>
        <copyright>Gian Maria  Ricci</copyright>
        <managingEditor>alkampfer@nablasoft.com</managingEditor>
        <generator>Subtext Version 1.9.5.176</generator>
        <item>
            <title>NHibernate, criteria query e relazioni</title>
            <link>http://blogs.ugidotnet.org/rgm/archive/2007/12/04/90097.aspx</link>
            <description>&lt;p&gt;Supponiamo di avere le classi Customers e Orders del database northwind, abbiamo implementato la relazione many-to-one bidirezionale nel nostro domain model, così da avere una collection orders nella classe Customer, ed una proprietà Customer nell'oggetto order. Ora se si vuole prendere tutti gli ordini di "ALFKI" in un determinato range di tempo si può scrivere questa criteria query &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;ICriteria&lt;/span&gt;&lt;span style="color: black;"&gt; criteria = session.CreateCriteria(&lt;/span&gt;&lt;span style="color: blue;"&gt;typeof&lt;/span&gt;&lt;span style="color: black;"&gt; (&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Order&lt;/span&gt;&lt;span style="color: black;"&gt;));&lt;br /&gt;
criteria.Add(&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Expression&lt;/span&gt;&lt;span style="color: black;"&gt;.Between(&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;"OrderDate"&lt;/span&gt;&lt;span style="color: black;"&gt;, &lt;/span&gt;&lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;DateTime&lt;/span&gt;&lt;span style="color: black;"&gt;(1997, 10, 1), &lt;/span&gt;&lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;DateTime&lt;/span&gt;&lt;span style="color: black;"&gt;(1998, 1, 1)));&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Customer&lt;/span&gt;&lt;span style="color: black;"&gt; cust = session.Load&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Customer&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;gt;(&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;"ALFKI"&lt;/span&gt;&lt;span style="color: black;"&gt;);&lt;br /&gt;
criteria.Add(&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Expression&lt;/span&gt;&lt;span style="color: black;"&gt;.Eq(&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;"Customer"&lt;/span&gt;&lt;span style="color: black;"&gt;, cust));&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;IList&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Order&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;gt; result = criteria.List&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Order&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;gt;(); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Notare come il riferimento all'oggetto Customer sia recuperato tramite il &lt;em&gt;Session.Load()&lt;/em&gt; cosi da creare un proxy e non andare a disturbare il database. Ma cosa succede se la relazione non è implementata in maniera bidirezionale, ma unidirezionale? Ad esempio se l'oggetto Order non ha nessuna proprietà che punta all'oggetto Customer? In questo caso è possibile fare una criteria query un po' "sporchina" dato che andiamo a referenziare direttamente i campi del nostro database. Ecco come fare: &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;ICriteria&lt;/span&gt;&lt;span style="color: black;"&gt; criteria = session.CreateCriteria(&lt;/span&gt;&lt;span style="color: blue;"&gt;typeof&lt;/span&gt;&lt;span style="color: black;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Order2&lt;/span&gt;&lt;span style="color: black;"&gt;));&lt;br /&gt;
criteria.Add(&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Expression&lt;/span&gt;&lt;span style="color: black;"&gt;.Between(&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;"OrderDate"&lt;/span&gt;&lt;span style="color: black;"&gt;, &lt;/span&gt;&lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;DateTime&lt;/span&gt;&lt;span style="color: black;"&gt;(1997, 10, 1), &lt;/span&gt;&lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;DateTime&lt;/span&gt;&lt;span style="color: black;"&gt;(1998, 1, 1)));&lt;br /&gt;
criteria.Add(&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Expression&lt;/span&gt;&lt;span style="color: black;"&gt;.Sql(&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;"{alias}.CustomerId = ?"&lt;/span&gt;&lt;span style="color: black;"&gt;, &lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;"ALFKI"&lt;/span&gt;&lt;span style="color: black;"&gt;, &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;NHibernateUtil&lt;/span&gt;&lt;span style="color: black;"&gt;.String));&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;IList&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Order2&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;gt; result = criteria.List&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Order2&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;gt;(); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Come si può vedere NHibernate fornisce un comodissimo criterio &lt;strong&gt;Sql&lt;/strong&gt; che permette di inserire condizioni su campi non mappati nel domain model, chiaramente questo è poco object oriented, ma è un altro degli strumenti da tenere nella cassetta degli attrezzi e da usare quando serve. &lt;/p&gt;
&lt;p&gt;A questo punto però i puristi storcerebbero il naso, cosa succede se cambio il nome dei campi del db? Con Nhibernate non dovrei mai fare query che contengono il nome dei campi sql!!! Si lo so avete ragione ed infatti anche se abbiamo una relazione unidirezionale da Customer a Orders tramite la proprietà Orders di Customer possiamo fare uso di subquery tramite la Criteria API &lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: Consolas;"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;DetachedCriteria&lt;/span&gt;&lt;span style="color: black;"&gt; subquery = &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;DetachedCriteria&lt;/span&gt;&lt;span style="color: black;"&gt;.For(&lt;/span&gt;&lt;span style="color: blue;"&gt;typeof&lt;/span&gt;&lt;span style="color: black;"&gt; (&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Customer2&lt;/span&gt;&lt;span style="color: black;"&gt;))&lt;br /&gt;
   .SetProjection(&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Projections&lt;/span&gt;&lt;span style="color: black;"&gt;.Property(&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;"Id"&lt;/span&gt;&lt;span style="color: black;"&gt;))&lt;br /&gt;
   .CreateAlias(&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;"Orders"&lt;/span&gt;&lt;span style="color: black;"&gt;, &lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;"Orders"&lt;/span&gt;&lt;span style="color: black;"&gt;)&lt;br /&gt;
   .Add(&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Expression&lt;/span&gt;&lt;span style="color: black;"&gt;.Eq(&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;"Id"&lt;/span&gt;&lt;span style="color: black;"&gt;, &lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;"ALFKI"&lt;/span&gt;&lt;span style="color: black;"&gt;))&lt;br /&gt;
   .Add(&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Property&lt;/span&gt;&lt;span style="color: black;"&gt;.ForName(&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;"Orders.Id"&lt;/span&gt;&lt;span style="color: black;"&gt;).EqProperty(&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;"order.Id"&lt;/span&gt;&lt;span style="color: black;"&gt;));&lt;br /&gt;
 &lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;ICriteria&lt;/span&gt;&lt;span style="color: black;"&gt; criteria = session.CreateCriteria(&lt;/span&gt;&lt;span style="color: blue;"&gt;typeof&lt;/span&gt;&lt;span style="color: black;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Order2&lt;/span&gt;&lt;span style="color: black;"&gt;), &lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;"order"&lt;/span&gt;&lt;span style="color: black;"&gt;);&lt;br /&gt;
criteria.Add(&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Expression&lt;/span&gt;&lt;span style="color: black;"&gt;.Between(&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;"OrderDate"&lt;/span&gt;&lt;span style="color: black;"&gt;, &lt;/span&gt;&lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;DateTime&lt;/span&gt;&lt;span style="color: black;"&gt;(1997, 10, 1), &lt;/span&gt;&lt;span style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;DateTime&lt;/span&gt;&lt;span style="color: black;"&gt;(1998, 1, 1)));&lt;br /&gt;
criteria.Add(&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Subqueries&lt;/span&gt;&lt;span style="color: black;"&gt;.Exists(subquery));&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;IList&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Order2&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;gt; result = criteria.List&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Order2&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;gt;();&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Assert&lt;/span&gt;&lt;span style="color: black;"&gt;.That(result.Count, &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;Is&lt;/span&gt;&lt;span style="color: black;"&gt;.EqualTo(2));&lt;/span&gt;&lt;/span&gt; 	&lt;/p&gt;
&lt;p&gt;Che genera la seguente query in SQL &lt;/p&gt;
&lt;p&gt;exec sp_executesql N'SELECT this_.OrderId as OrderId1_0_, this_.OrderDate as OrderDate1_0_ FROM dbo.ORders this_ WHERE this_.OrderDate between @p0 and @p1 and exists (SELECT this_0_.CustomerId as y0_ FROM dbo.Customers this_0_ inner join dbo.ORders orders1_ on this_0_.CustomerId=orders1_.CustomerId WHERE this_0_.CustomerId = @p2 and orders1_.OrderId = this_.OrderId)', N'@p0 datetime,@p1 datetime,@p2 nvarchar(5)', @p0 = 'Oct  1 1997 12:00:00:000AM', @p1 = 'Jan  1 1998 12:00:00:000AM', @p2 = N'ALFKI' &lt;/p&gt;
&lt;p&gt;Alk.&lt;/p&gt;
&lt;p&gt;Technorati tags:&lt;a rel="tag" href="http://technorati.com/tags/NHibernate"&gt;NHibernate&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/rgm/aggbug/90097.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gian Maria  Ricci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rgm/archive/2007/12/04/90097.aspx</guid>
            <pubDate>Tue, 04 Dec 2007 19:22:21 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/rgm/archive/2007/12/04/90097.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rgm/comments/commentRss/90097.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rgm/services/trackbacks/90097.aspx</trackback:ping>
        </item>
        <item>
            <title>Provider di connessione per nhibernate - Precisazioni</title>
            <link>http://blogs.ugidotnet.org/rgm/archive/2007/08/03/87290.aspx</link>
            <description>&lt;p&gt;Nel &lt;a href="http://blogs.ugidotnet.org/rgm/archive/2007/08/03/87288.aspx"&gt;precedente post&lt;/a&gt; ho spiegato come realizzare un provider custom per le connessioni in nhibernate al fine di potere iniettare una connessione in una sessione. Per completezza è il caso di citare che il metodo &lt;em&gt;SessionFactory.OpenSession()&lt;/em&gt; ha una versione in overload che accetta un oggetto IDbConnection come parametro. Il risultato è praticamente analogo e sicuramente si scrive meno codice rispetto all'esempio precedente. Il contro di questa tecnica è che spesso si debbono eseguire dei test su classi che internamente creano una sessione (o prendono quella della conversazione corrente). Queste classi chiaramente invocano il metodo &lt;em&gt;SessionFactory.OpenSession()&lt;/em&gt; senza preoccuparsi della gestione della connessione e grazie al ConnectionProvider si può intervenire trasparentemente iniettando la propria connessione senza che il codice di produzione si accorga della differenza. 
&lt;/p&gt;&lt;p&gt;Alk.&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/rgm/aggbug/87290.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gian Maria  Ricci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rgm/archive/2007/08/03/87290.aspx</guid>
            <pubDate>Fri, 03 Aug 2007 20:56:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/rgm/archive/2007/08/03/87290.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rgm/comments/commentRss/87290.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rgm/services/trackbacks/87290.aspx</trackback:ping>
        </item>
        <item>
            <title>Provider di connessioni per nhibernate</title>
            <link>http://blogs.ugidotnet.org/rgm/archive/2007/08/03/87288.aspx</link>
            <description>&lt;p&gt;Debbo dire che più conosco nhibernate più lo apprezzo veramente tanto. Stasera mi sono chiesto, posso iniettare una mia connessione in una sessione? Lo scopo di una simile operazione è vario, potrei ad esempio iniettare una connessione durante un test per potere poi fare query dirette al database e verificare che i dati siano scritti bene, oppure potrei volere eseguire codice SQL diretto assieme a nhibernate in una unica transazione etc etc. LA soluzione a questo problema è veramente banale :D.
&lt;/p&gt;&lt;p&gt;Nhibernate definisce un interfaccia chiamata &lt;em&gt;IConnectionProvider&lt;/em&gt; tramite la quale la sessionFactory recupera la connessione da dare in pasto alla sessione, solitamente viene utilizzato un provider di default definito da queste due righe di configurazione.
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas"&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;add&lt;/span&gt;&lt;span style="color:blue"&gt; &lt;/span&gt;&lt;span style="color:red"&gt;key&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:black"&gt;"&lt;/span&gt;&lt;span style="color:blue"&gt;hibernate.connection.provider&lt;/span&gt;&lt;span style="color:black"&gt;"&lt;/span&gt;&lt;span style="color:blue"&gt; &lt;/span&gt;&lt;span style="color:red"&gt;value&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:black"&gt;"&lt;/span&gt;&lt;span style="color:blue"&gt;NHibernate.Connection.DriverConnectionProvider&lt;/span&gt;&lt;span style="color:black"&gt;"&lt;/span&gt;&lt;span style="color:blue"&gt; /&amp;gt;&lt;/span&gt;&lt;span style="color:black"&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;add&lt;/span&gt;&lt;span style="color:blue"&gt; &lt;/span&gt;&lt;span style="color:red"&gt;key&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:black"&gt;"&lt;/span&gt;&lt;span style="color:blue"&gt;hibernate.connection.connection_string&lt;/span&gt;&lt;span style="color:black"&gt;"&lt;/span&gt;&lt;span style="color:blue"&gt;   &lt;/span&gt;&lt;span style="color:red"&gt;value&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:black"&gt;"&lt;/span&gt;&lt;span style="color:blue"&gt;MiaStringaConnessione&lt;/span&gt;&lt;span style="color:black"&gt;"&lt;/span&gt;&lt;span style="color:blue"&gt; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;NAturalmente se si volesse creare un proprio provider è sufficiente ereditare da una classe astratta chiamata ConnectionProvider, di cui è possibile implementare la sola funzione &lt;em&gt;GetConnection()&lt;/em&gt;.
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas"&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;class&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:#2b91af"&gt;MyConnectionProvider&lt;/span&gt;&lt;span style="color:black"&gt; : &lt;/span&gt;&lt;span style="color:#2b91af"&gt;ConnectionProvider&lt;/span&gt;&lt;span style="color:black"&gt;  {&lt;br/&gt; &lt;br/&gt;   &lt;/span&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;override&lt;/span&gt;&lt;span style="color:black"&gt; System.Data.&lt;/span&gt;&lt;span style="color:#2b91af"&gt;IDbConnection&lt;/span&gt;&lt;span style="color:black"&gt; GetConnection() {&lt;br/&gt;      &lt;/span&gt;&lt;span style="color:#2b91af"&gt;IDbConnection&lt;/span&gt;&lt;span style="color:black"&gt; conn = &lt;/span&gt;&lt;span style="color:blue"&gt;new&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:#2b91af"&gt;SqlConnection&lt;/span&gt;&lt;span style="color:black"&gt;(&lt;/span&gt;&lt;span style="color:#a31515"&gt;"Server=localhost\\sql2000;initial catalog=NorthWind;User Id=sa;password=ottaedro_2006@"&lt;/span&gt;&lt;span style="color:black"&gt;);&lt;br/&gt;      conn.Open();&lt;br/&gt;      &lt;/span&gt;&lt;span style="color:blue"&gt;return&lt;/span&gt;&lt;span style="color:black"&gt; conn;&lt;br/&gt;   }&lt;br/&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Come si può vedere nell'esempio in questione la connessione viene costruita con una stringa hardcoded, ma le possibilità sono indubbiamente aperte alla nostra fantasia. Chiaramente per sfruttare questo nuovo provider di connessioni è necessario specificare la classe desiderata nel file di configurazione e la connessione restituita deve essere stata precedentemente aperta.
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas"&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;add&lt;/span&gt;&lt;span style="color:black"&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color:blue"&gt;         &lt;/span&gt;&lt;span style="color:red"&gt;key&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:black"&gt;"&lt;/span&gt;&lt;span style="color:blue"&gt;hibernate.connection.provider&lt;/span&gt;&lt;span style="color:black"&gt;"&lt;br/&gt;&lt;/span&gt;&lt;span style="color:blue"&gt;         &lt;/span&gt;&lt;span style="color:red"&gt;value&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:black"&gt;"&lt;/span&gt;&lt;span style="color:blue"&gt;NorthwindTest.MyConnectionProvider, NorthwindTest&lt;/span&gt;&lt;span style="color:black"&gt;"&lt;/span&gt;&lt;span style="color:blue"&gt; /&amp;gt;&lt;/span&gt;&lt;span style="color:black"&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;add&lt;/span&gt;&lt;span style="color:blue"&gt; &lt;/span&gt;&lt;span style="color:red"&gt;key&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:black"&gt;"&lt;/span&gt;&lt;span style="color:blue"&gt;hibernate.connection.connection_string&lt;/span&gt;&lt;span style="color:black"&gt;"&lt;/span&gt;&lt;span style="color:blue"&gt;   &lt;/span&gt;&lt;span style="color:red"&gt;value&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:black"&gt;"&lt;/span&gt;&lt;span style="color:blue"&gt;MiaStringaConnessione&lt;/span&gt;&lt;span style="color:black"&gt;"&lt;/span&gt;&lt;span style="color:blue"&gt; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Non dimenticate di mettere sempre la configurazione connection_string perchè se non presente l'oggetto ConnectionProvider di base genererà un eccezione.
&lt;/p&gt;&lt;p&gt;Alk.
&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/rgm/aggbug/87288.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Gian Maria  Ricci</dc:creator>
            <guid>http://blogs.ugidotnet.org/rgm/archive/2007/08/03/87288.aspx</guid>
            <pubDate>Fri, 03 Aug 2007 19:56:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/rgm/archive/2007/08/03/87288.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/rgm/comments/commentRss/87288.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/rgm/services/trackbacks/87288.aspx</trackback:ping>
        </item>
    </channel>
</rss>