<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.dotnet6.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Nexus&amp;#39;s Threadpool</title><link>http://www.dotnet6.com/blogs/nexus/default.aspx</link><description>There is not one, there are many ...</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP2 (Build: 20611.960)</generator><item><title>Event Raising the good, the bad and the ugly ...</title><link>http://www.dotnet6.com/blogs/nexus/archive/2008/09/15/event-raising-the-good-the-bad-and-the-ugly.aspx</link><pubDate>Mon, 15 Sep 2008 10:14:00 GMT</pubDate><guid isPermaLink="false">e5d4c6e2-da0c-4b9e-b9f2-d96787ec4ab1:1676</guid><dc:creator>Nexus</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnet6.com/blogs/nexus/rsscomments.aspx?PostID=1676</wfw:commentRss><comments>http://www.dotnet6.com/blogs/nexus/archive/2008/09/15/event-raising-the-good-the-bad-and-the-ugly.aspx#comments</comments><description>&lt;p&gt;So you need to raise an event, and wanna do it in a threadsafe way, or safer way :)&lt;br /&gt;&lt;br /&gt;Not so long ago i wrote this code :&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-FAMILY:courier new;"&gt;...&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY:courier new;"&gt;public event EventHandler Save;&lt;br /&gt;...&lt;br /&gt;private void OnSave(EventArgs e)&lt;br /&gt;{&lt;br /&gt;if(Save != null) Save(this,EventArgs.Empty);&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What is wrong here, the fact that the point between the not null check and the eventual event raising can has changes in between.&lt;br /&gt;&lt;br /&gt;So from now just write this :&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-FAMILY:courier new;"&gt;private void OnSave(EventArgs e)&lt;br /&gt;{&lt;br /&gt;EventHandler handlers = Save;&lt;br /&gt;if (handlers != null) handlers(this, e);&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;This makes a copy into the handlers variable and cannot change between check and raise. &lt;/p&gt;&lt;img src="http://www.dotnet6.com/aggbug.aspx?PostID=1676" width="1" height="1"&gt;</description><category domain="http://www.dotnet6.com/blogs/nexus/archive/tags/Languages/default.aspx">Languages</category><category domain="http://www.dotnet6.com/blogs/nexus/archive/tags/Usage/default.aspx">Usage</category><category domain="http://www.dotnet6.com/blogs/nexus/archive/tags/C_2300_/default.aspx">C#</category></item><item><title>Method hiding in c# or the use of new keyword.</title><link>http://www.dotnet6.com/blogs/nexus/archive/2008/02/14/method-hiding-in-c-or-the-use-of-new-keyword.aspx</link><pubDate>Thu, 14 Feb 2008 08:16:00 GMT</pubDate><guid isPermaLink="false">e5d4c6e2-da0c-4b9e-b9f2-d96787ec4ab1:1176</guid><dc:creator>Nexus</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnet6.com/blogs/nexus/rsscomments.aspx?PostID=1176</wfw:commentRss><comments>http://www.dotnet6.com/blogs/nexus/archive/2008/02/14/method-hiding-in-c-or-the-use-of-new-keyword.aspx#comments</comments><description>&lt;p&gt;&lt;u&gt;Definition:&lt;/u&gt; Method hiding or simply put if a method is not overriding the derived method, it is hiding it.&lt;br /&gt;&lt;u&gt;Snippet 1:&lt;/u&gt; 
&lt;p&gt;&lt;span class="kwrd"&gt;&lt;span class="kwrd"&gt;using System; &lt;br /&gt;&lt;br /&gt;namespace Polymorphism&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class Super { public void SomeMethod()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&amp;quot;Super Write&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class Sub : Super&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public new void SomeMethod()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&amp;quot;Sub Write&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal class Program&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static void Main(string[] args)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Super lSuper = new Super();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sub lSub = new Sub();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lSuper.SomeMethod();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lSub.SomeMethod();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;The using of the new keyword is optional as it will only generate a compiler warning. Over to example 2&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;u&gt;Snippet 2: &lt;br /&gt;&lt;/u&gt;namespace Polymorphism&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public abstract class Super&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void SomeMethod()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&amp;quot;Super Write&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class Sub : Super&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public new void SomeMethod()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&amp;quot;Sub Write&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class Program&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static void Main(string[] args)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sub lSub = new Sub();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lSub.SomeMethod(); //Which will output &amp;quot;Sub Write&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;And again the use of the new keyword is optional and will only generate a compiler warning.&amp;nbsp; Now why does this concerns me as a developer.&lt;br /&gt;Suppose you have developed a framework with an abstract super class like in snippet 3&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;u&gt;Snippet 3:&lt;/u&gt;&lt;br /&gt;using System;&lt;br /&gt;using Polymorphism;&lt;/p&gt;
&lt;p&gt;namespace Polymorphism&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public abstract class Super&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void SomeRatherImportantSuperStuff()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&amp;quot;Super Write&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Very important code !!! -- here&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DoSubStuff();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public abstract void DoSubStuff();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class Sub : Super&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public new void SomeRatherImportantSuperStuff()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&amp;quot;Sub Write&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override void DoSubStuff()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&amp;quot;Sub Write&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class Program&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static void Main(string[] args)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sub lSub = new Sub();&lt;/p&gt;
&lt;p&gt;lSub.SomeRatherImportantSuperStuff(); //Which will output &amp;quot;Sub Write&amp;quot; and NOT first Super Write like we wanted&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;So a quick word of advice here make visual studio threat the warning of the not using a new keyword as a build error, like you are used to for the public method missing comment warning.&lt;br /&gt;Just yet another new feature that can cause serious issues and break more or less your inheritance. Apparantly you can even hide a sealed method !!!&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.dotnet6.com/aggbug.aspx?PostID=1176" width="1" height="1"&gt;</description><category domain="http://www.dotnet6.com/blogs/nexus/archive/tags/Languages/default.aspx">Languages</category></item><item><title>F# what's next, G# ?</title><link>http://www.dotnet6.com/blogs/nexus/archive/2007/10/26/f-what-s-next-g.aspx</link><pubDate>Fri, 26 Oct 2007 07:12:00 GMT</pubDate><guid isPermaLink="false">e5d4c6e2-da0c-4b9e-b9f2-d96787ec4ab1:1145</guid><dc:creator>Nexus</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnet6.com/blogs/nexus/rsscomments.aspx?PostID=1145</wfw:commentRss><comments>http://www.dotnet6.com/blogs/nexus/archive/2007/10/26/f-what-s-next-g.aspx#comments</comments><description>&lt;p&gt;Well a couple of days ago, i saw on Tweakers.Net that Mickeysoft decided to release a new .Net Language called F#. On the microsoft&amp;#39;s research site (&lt;a href="http://research.microsoft.com/fsharp/fsharp.aspx"&gt;http://research.microsoft.com/fsharp/fsharp.aspx&lt;/a&gt;) following definition is used :&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;quot;Combining the efficiency, scripting, strong typing and productivity of ML with the stability, libraries, cross-language working and tools of .NET. &amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Apparantly M Research decided to take it into productivity. After reading up the getting started site and the manual, etc ... i still can&amp;#39;t see what is the point of this. But hey my Visual Studio has also something called J# that i never even opened.&lt;/p&gt;
&lt;p&gt;Syntax :&lt;/p&gt;
&lt;p&gt;&amp;nbsp; let x = 3 + (4 * 5)&lt;br /&gt;&amp;nbsp; let res = (if x = 23 then &amp;quot;correct&amp;quot; else &amp;quot;incorrect&amp;quot;)&lt;/p&gt;
&lt;p&gt;And also use of &amp;quot;-&amp;gt;&amp;quot; &amp;quot;-&amp;lt;&amp;quot; let f = (fun x -&amp;gt; x + 1)&lt;/p&gt;
&lt;p&gt;Have Fun.&lt;/p&gt;&lt;img src="http://www.dotnet6.com/aggbug.aspx?PostID=1145" width="1" height="1"&gt;</description><category domain="http://www.dotnet6.com/blogs/nexus/archive/tags/Languages/default.aspx">Languages</category></item><item><title>NHibernateIt Released on Sourceforge.Net</title><link>http://www.dotnet6.com/blogs/nexus/archive/2007/10/16/nhibernateit-released-on-sourceforge-net.aspx</link><pubDate>Tue, 16 Oct 2007 14:08:00 GMT</pubDate><guid isPermaLink="false">e5d4c6e2-da0c-4b9e-b9f2-d96787ec4ab1:1140</guid><dc:creator>Nexus</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.dotnet6.com/blogs/nexus/rsscomments.aspx?PostID=1140</wfw:commentRss><comments>http://www.dotnet6.com/blogs/nexus/archive/2007/10/16/nhibernateit-released-on-sourceforge-net.aspx#comments</comments><description>&lt;p&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Tahoma;"&gt;&lt;em&gt;&lt;strong&gt;NHibernateIt&lt;/strong&gt;&lt;/em&gt; is an NHibernate helper project build on the latest public release of NHibernate 1.20.GA.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;It provides session management for Web as well as Thread-based Session management, Transaction Management and a repository class with a lot of functionality to use it as a component in your data access layer.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Tahoma;"&gt;When I was looking on the web for how to integrate NHibernate in an Asp.Net project, I found a lot of stuff on the httpmodules for creating a session helper for the Session-Per-View-Pattern. I stumbled upon a project called NHibernator(&lt;a href="http://oracleatdotnet.blogspot.com/2007/04/nhibernator-simple-but-yet-powerful.html"&gt;http://oracleatdotnet.blogspot.com/2007/04/nhibernator-simple-but-yet-powerful.html&lt;/a&gt;), it was not maintained by the original developer and contained too much stuff I really didn’t needed, like&amp;nbsp;for example the NHibernatorTransaction.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Tahoma;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;/span&gt;Also I didn’t found any solutions for how to use in a commonly used architecture where we have a data access layer, a business layer and perhaps a service layer.&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Tahoma;"&gt;I especially had problems with the session management because I didn’t wanted to use the nhibernate session on the UI layer. &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Tahoma;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Tahoma;"&gt;I started out creating a BaseManager for objects that Implemented IDisposable, for ease of use.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;Now it has become a SessionHelper class with a lot of functionality.&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Tahoma;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Tahoma;"&gt;A small&amp;nbsp;downside of the Nhibernator Project was the default configuration file naming ‘hibernate.cfg.xml’ which was a security threat when used in a web environment, because you can open xml trough your browser. Yes, you could change it in the web.config file, but as I am a developer who likes to have the entire configuration stored in a database and populated trough a unit test, except for connectionstrings, I love to have web projects without a config file except the default one with for example tracing enabled and such.&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Tahoma;"&gt;&amp;nbsp;&lt;/span&gt; &lt;br /&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Tahoma;"&gt;Still a lot of credit has to go to Tomer Avissar (author of NHibernator) for starting such a great project. &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Tahoma;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 0pt;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:Tahoma;"&gt;&lt;/span&gt;Well now it&amp;#39;s added to SourceForge.Net on &lt;a href="http://sourceforge.net/projects/nhibernateit"&gt;http://sourceforge.net/projects/nhibernateit&lt;/a&gt;, with full source on svn and simple documentation.&lt;/p&gt;&lt;img src="http://www.dotnet6.com/aggbug.aspx?PostID=1140" width="1" height="1"&gt;</description><category domain="http://www.dotnet6.com/blogs/nexus/archive/tags/NHibernate/default.aspx">NHibernate</category></item></channel></rss>