<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://scrum.codebetter.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>Peter&amp;#39;s Gekko </title><link>http://scrum.codebetter.com/blogs/peter.van.ooijen/default.aspx</link><description>public Blog MyNotepad : Imho
{
}</description><dc:language>en</dc:language><generator>CommunityServer 2007 (Build: 20416.853)</generator><item><title>Nhibernate and medium trust</title><link>http://scrum.codebetter.com/blogs/peter.van.ooijen/archive/2008/05/09/nhibernate-and-medium-trust.aspx</link><pubDate>Fri, 09 May 2008 13:35:14 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:177956</guid><dc:creator>pvanooijen</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://scrum.codebetter.com/blogs/peter.van.ooijen/rsscomments.aspx?PostID=177956</wfw:commentRss><comments>http://scrum.codebetter.com/blogs/peter.van.ooijen/archive/2008/05/09/nhibernate-and-medium-trust.aspx#comments</comments><description>&lt;p&gt;Being sick of all the hassles it took to keep my own server up and running I&amp;#39;ve moved it to a &lt;a href="http://www.xs4all.nl/allediensten/website/hosting/specificatiesadvanced.php"&gt;public hoster&lt;/a&gt;. Which does offer asp.net hosting but like many others code is only given &lt;a href="http://msdn.microsoft.com/en-us/library/ms998341.aspx"&gt;medium trust&lt;/a&gt;. My site was using nHibernate. That does have serious problems under this trust level. I&amp;#39;ve been investigating and experimenting to get it up and running. Alas without success. Nevertheless a summary of what I&amp;#39;ve done. As most web references on this subject are either vague or not specific enough this can help get a better overview. Or perhaps somebody can point me to something I have overlooked.&lt;/p&gt;  &lt;p&gt;Medium trust restricts the permissions given to your code. When googling a lot of the links mention the error message &lt;em&gt;That assembly does not allow partially trusted callers.&lt;/em&gt; You can get it&amp;#160; when you sign the assemblies of your site. It depends on your hoster. You used to get that when hibernate tries to load a signed assembly with your domain objects. This can be fixed by setting the &lt;font size="2"&gt;&lt;em&gt;AllowPartiallyTrustedCallersAttribute&lt;/em&gt; on the loading assembly. This has been fixed on the recent production build of nHibernate; a lot of the posts still around deal with a previous version of nHibernate and are a dead end.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The main problem with medium trust is that it inhibits reflection. nHibernate depends heavily on reflection. For lazy load to work nHibernate generates proxies to the domain objects. These proxies are built by reflecting on the domain objects. You can configure nHibernate to work without lazy loading. I gave this path a full try and tried everything I could find on the web and could think of myself.&lt;/p&gt;  &lt;p&gt;This is what I did to the configuration&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Apply the &lt;em&gt;requirepermission=&amp;quot;false&amp;quot; i&lt;/em&gt;n the web.config section of nHibernate&lt;/li&gt;    &lt;li&gt;Set the &lt;em&gt;hibernate.use_reflection_optimizer&lt;/em&gt; in the web.config to false&lt;/li&gt;    &lt;li&gt;Set the &lt;em&gt;hibernate.bytecode.provider&lt;/em&gt; in the web.config to null.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This is what I did in the mapping files&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Set the &lt;em&gt;lazy&lt;/em&gt; attribute of all classes to &amp;quot;false&amp;quot;&lt;/li&gt;    &lt;li&gt;Set the &lt;em&gt;lazy&lt;/em&gt; attribute of all collections to &amp;quot;false&amp;quot;&lt;/li&gt;    &lt;li&gt;Remove the &lt;em&gt;proxy&lt;/em&gt; attribute of all classes&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In the domain classes I even made all public members non-virtual. In a normal scenario nHibernate will now completely trip over this, complaining it cannot create a proxy. &lt;/p&gt;  &lt;p&gt;On my local machine the site still worked. But on the medium trust host it immediately crashed again on a security exception. The stack trace pointed to the initialization of the reflection optimizer. Huh ? This is where I gave up.&lt;/p&gt;  &lt;p&gt;There is an approach on the web which promises &lt;a href="http://blechie.com/WPierce/archive/2008/02/17/Lazy-Loading-with-nHibernate-Under-Medium-Trust.aspx"&gt;a working lazy load&lt;/a&gt; even in medium trust. It is supposed to work by replacing the proxyfactory by one which provides pre generated proxies instead of generating them on the fly via reflection. Alas providing you own proxyfactory takes nHibernate 2.0. Which is still in alpha phase. From a maintainability point of view beyond consideration. &lt;/p&gt;  &lt;p&gt;Googling around getting nHibernate to work under medium trust is considered important but still takes a lot of effort, also in 2.0. I really hope it is going to work but for me it&amp;#39;s &lt;a href="http://codebetter.com/blogs/peter.van.ooijen/archive/2007/12/03/back-to-basics-from-the-db-to-a-simple-domain-object.aspx"&gt;back to basics&lt;/a&gt; for this project. Not all work has to be done again, the domain model is clear, all I have to do is rewrite the implementation of the repositories. To the UI it&amp;#39;s not important how I gets the data as long as it gets them.&lt;/p&gt;  &lt;p&gt;The main reason for needing persistence on my site is an index on a selection of my publications. Reading through the results it sometimes does make my toes curl. A lot of the work is pretty old by now and my techniques have really grown over the years. Time for a good update of the contents of the underlying db. &lt;/p&gt;&lt;img src="http://scrum.codebetter.com/aggbug.aspx?PostID=177956" width="1" height="1"&gt;</description><category domain="http://scrum.codebetter.com/blogs/peter.van.ooijen/archive/tags/Data/default.aspx">Data</category></item><item><title>Domain-Driven Design: Reading toward deeper insight</title><link>http://scrum.codebetter.com/blogs/peter.van.ooijen/archive/2008/05/05/domain-driven-design-reading-toward-deeper-insight.aspx</link><pubDate>Mon, 05 May 2008 12:48:33 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:177675</guid><dc:creator>pvanooijen</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://scrum.codebetter.com/blogs/peter.van.ooijen/rsscomments.aspx?PostID=177675</wfw:commentRss><comments>http://scrum.codebetter.com/blogs/peter.van.ooijen/archive/2008/05/05/domain-driven-design-reading-toward-deeper-insight.aspx#comments</comments><description>&lt;p&gt;On almost every family holiday I take a good book. Not being distracted by the continuous flow of the Internet and with enough time to let stuff sink in, holiday time makes a good time to see things in perspective again and come home with a fresh mind full off ideas. &lt;a href="http://codebetter.com/blogs/peter.van.ooijen/archive/2006/09/06/A-_2800_holiday_2900_-read-into-enterprise-application-architecture.aspx"&gt;Last time&lt;/a&gt; this worked very well to give myself a real boost on building enterprise applications domain-driven style. Jimmy Nilsson&amp;#39;s &lt;em&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0321268202"&gt;Applying Domain-Driven Design and Patterns&lt;/a&gt;&lt;/em&gt; was a quite pragmatic coding based approach which really accelerated my way of building applications. So this time I considered it time to finally do a thorough read of Eric Evans&amp;#39;s bible of DDD&lt;/p&gt;  &lt;p&gt;&lt;img src="http://codebetter.com/photos/peter.van.ooijen/images/177667/original.aspx" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;There are plenty of reviews on the web, on Amazon alone you will find &lt;a href="http://www.amazon.com/review/product/0321125215/ref=dp_top_cm_cr_acr_txt?%5Fencoding=UTF8&amp;amp;showViewpoints=1"&gt;loads and loads of information&lt;/a&gt; on it&amp;#39;s content and value. Besides that it has a &lt;a href="http://www.domaindrivendesign.org/books/index.html"&gt;website&lt;/a&gt;. Fragments of it&amp;#39;s content is found in so many posts on Codebetter that it almost seems implicit knowledge over here. But as I enjoyed it that much I would like to draw some more attention to this modern classic itself. &lt;/p&gt;  &lt;p&gt;Inside you will not find a lot of code. Besides that all code is Java code; the .net platform is not even mentioned once. The book is about the essentials of code. All revolves around one central object oriented domain model. A model which serves the developer to write the implementation but it is also a model which speaks the language of the domain expert who understands the required functionality of the software. The model is described in an ubiquitous language whose meaning is understood in the same way by all team members and so serves good communication. By refactoring the developer as well as the domain expert work in cooperation on the same model. This may sound somewhat vague but chapter by chapter all aspects, from database persistence to a vision statement come by including very clear examples. Reading gave me many points of recognition as well as some aha-moments. A very pleasant moment was the conclusion of part 3, &lt;em&gt;Crisis as an opportunity&lt;/em&gt;, where Eric mentions &amp;quot;punctuated equilibria&amp;quot;, the (r)evolutionary model of a recent &lt;a href="http://codebetter.com/blogs/peter.van.ooijen/archive/2008/02/18/r-evolutionary-changes.aspx"&gt;rant&lt;/a&gt; of mine. How a domain model can evolve over time also fits perfectly in that story.&lt;/p&gt;  &lt;p&gt;At first I only felt sorry I had waited that long to start reading (or going on a holiday :)). The book is written very clear, does give a great overview of the subject and is very systematic in making its point. It is absolutely a classic that every developer, architect (&lt;a href="http://codebetter.com/blogs/peter.van.ooijen/archive/2007/09/28/an-architect-should-code-period.aspx"&gt;is there a real difference&lt;/a&gt; ?) or anyone else who is involved in building software should read. Not everybody does agree on this, between all the five star &lt;a href="http://www.amazon.com/review/product/0321125215/ref=cm_cr_pr_link_1"&gt;reviews on Amazon&lt;/a&gt; you will find some less enthusiastic ones. So, on second thought, I would not always recommend this book as a starting point for DDD. In case you have troubles reading it start Jimmy Nilsson&amp;#39;s &lt;em&gt;Applying DDD and patterns&lt;/em&gt; and make sure you really start doing some hands-on DDD stuff yourself. And sooner or later you will really appreciate this book as it will structure all you&amp;#39;ve read and done back into one clear and flexible model. And that&amp;#39;s what DDD is about.&lt;/p&gt;  &lt;p&gt;And now you should start reading it yourself.&lt;/p&gt;&lt;img src="http://scrum.codebetter.com/aggbug.aspx?PostID=177675" width="1" height="1"&gt;</description></item><item><title>Jimmy Nilsson is coming to the Netherlands</title><link>http://scrum.codebetter.com/blogs/peter.van.ooijen/archive/2008/04/07/jimmy-nilsson-is-coming-to-the-netherlands.aspx</link><pubDate>Mon, 07 Apr 2008 11:32:31 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:176415</guid><dc:creator>pvanooijen</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://scrum.codebetter.com/blogs/peter.van.ooijen/rsscomments.aspx?PostID=176415</wfw:commentRss><comments>http://scrum.codebetter.com/blogs/peter.van.ooijen/archive/2008/04/07/jimmy-nilsson-is-coming-to-the-netherlands.aspx#comments</comments><description>Coming april 24th Jimmy Nilsson will be speaking for Dutch user group &lt;a href="http://www.dotned.nl/"&gt;dotNed&lt;/a&gt;. Jimmy is well known for his book &lt;a href="http://www.amazon.com/exec/obidos/ASIN/0321268202"&gt;Applying Domain-Driven Design and Patterns&lt;/a&gt;. A very good aspect of this book is it&amp;#39;s style: very easy going and a pleasure to read; but in the meantime you&amp;#39;re learning a lot. My first read was &lt;a href="http://codebetter.com/blogs/peter.van.ooijen/archive/2006/09/06/A-_2800_holiday_2900_-read-into-enterprise-application-architecture.aspx"&gt;on a holiday&lt;/a&gt;; on a quite camping place in France. The bad thing about the coming presentation is that it&amp;#39;s during another holiday. While Jimmy is talking me and my family will be somewhere half way&amp;#160; between home and a sunny Greek island. Mixed emotions.&lt;img src="http://scrum.codebetter.com/aggbug.aspx?PostID=176415" width="1" height="1"&gt;</description><category domain="http://scrum.codebetter.com/blogs/peter.van.ooijen/archive/tags/User+groups+and+meetings/default.aspx">User groups and meetings</category></item><item><title>Wrapping up nHibernate in repositories</title><link>http://scrum.codebetter.com/blogs/peter.van.ooijen/archive/2008/04/04/wrapping-up-nhibernate-in-repositories.aspx</link><pubDate>Fri, 04 Apr 2008 19:46:00 GMT</pubDate><guid isPermaLink="false">d21fbbc9-c112-4f32-ad14-95939a2c53d4:176328</guid><dc:creator>pvanooijen</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://scrum.codebetter.com/blogs/peter.van.ooijen/rsscomments.aspx?PostID=176328</wfw:commentRss><comments>http://scrum.codebetter.com/blogs/peter.van.ooijen/archive/2008/04/04/wrapping-up-nhibernate-in-repositories.aspx#comments</comments><description>&lt;p&gt;In &lt;a href="http://codebetter.com/blogs/peter.van.ooijen/archive/2008/03/26/wrapping-up-nhibernate.aspx"&gt;my last post&lt;/a&gt; I discussed wrapping up the two core objects of nHibernate, the session&lt;strike&gt;manager&lt;/strike&gt;factory and the session, in a helper class. At the end of the story I briefly mentioned how to use helper objects in a repository. In this post I am further exploring the actual database actions of the helper and how this helper can be used in real repositories in a &amp;quot;regular&amp;quot; DDD style. Again, don&amp;#39;t take this as &lt;em&gt;the&lt;/em&gt; way to do things. The web is covered with a lot of ways to get that done and there are several tools available. This is just a minimalistic way which works well for me and does demonstrate some programming ideas. Feel free to comment. &lt;/p&gt;
&lt;p&gt;The &lt;a href="http://codebetter.com/blogs/peter.van.ooijen/archive/2008/03/26/wrapping-up-nhibernate.aspx"&gt;previous post&lt;/a&gt; discussed a way to manage nHibernate sessions. All data operations are performed on such a session. The major operations are described in this interface &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&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;interface&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;INhibernateHelper&lt;/span&gt;&lt;span style="COLOR:black;"&gt; : &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;IDisposable&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;IQuery&lt;/span&gt;&lt;span style="COLOR:black;"&gt; Query(&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt; query); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; T UniqueResult&amp;lt;T&amp;gt;(&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;IQuery&lt;/span&gt;&lt;span style="COLOR:black;"&gt; query); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;IList&lt;/span&gt;&lt;span style="COLOR:black;"&gt;&amp;lt;T&amp;gt; ListResult&amp;lt;T&amp;gt;(&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;IQuery&lt;/span&gt;&lt;span style="COLOR:black;"&gt; query); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;IEnumerable&lt;/span&gt;&lt;span style="COLOR:black;"&gt;&amp;lt;T&amp;gt; EnumerateResult&amp;lt;T&amp;gt;(&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;IQuery&lt;/span&gt;&lt;span style="COLOR:black;"&gt; query); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&lt;span style="COLOR:black;"&gt; BeginTransAction(); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&lt;span style="COLOR:black;"&gt; Commit(); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&lt;span style="COLOR:black;"&gt; Save(&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;object&lt;/span&gt;&lt;span style="COLOR:black;"&gt; dObject); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&lt;span style="COLOR:black;"&gt; Delete(&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;object&lt;/span&gt;&lt;span style="COLOR:black;"&gt; o); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The main reason for describing the functionality as an interface lies in testing; an interface is relatively easy to mock. &lt;/p&gt;
&lt;p&gt;The members which return data are defined as generic methods; this gives me the luxury of strongly typed data. At first sight it might be tempting to make the interface itself generic, that is: &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&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;interface&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;INhibernateHelper&lt;/span&gt;&lt;span style="COLOR:black;"&gt;&amp;lt;T&amp;gt; : &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;IDisposable&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; T UniqueResult&amp;lt;T&amp;gt;(&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;IQuery&lt;/span&gt;&lt;span style="COLOR:black;"&gt; query); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;But that will backfire when implementing the interface. To manage a shared sessionfactory I am using a static constructor. As every specific type instance of a generic class fires its own specific static constructor the sessionfactory can no longer be shared over different classes. Having only the methods themselves generic will do. &lt;/p&gt;
&lt;p&gt;When it comes to writing to the database it is important to realize the way nHibernate works. Invoking &lt;em&gt;Save&lt;/em&gt; or &lt;em&gt;Delete&lt;/em&gt; will not immediately persist that data. It takes the session&amp;#39;s &lt;em&gt;Flush&lt;/em&gt; method to trigger that. When flushing the data your objects will not always be persisted in the same order as the &lt;em&gt;Save&lt;/em&gt; and &lt;em&gt;Delete&lt;/em&gt; invocations. Things are further complicated because nHibernate will sometimes perform an implicit flush when querying to prevent returning stale data. &lt;/p&gt;
&lt;p&gt;On a session you can start a transaction but you can only start one transaction on every session. In my implementation of transactions I&amp;#39;m very forgiving. &lt;em&gt;BeginTransaction&lt;/em&gt; can be invoked again and again; the first invocation will start the nHibernate transaction. A &lt;em&gt;Commit&lt;/em&gt; is always honored; in case no transaction was started the helper will just flush the data. &lt;/p&gt;
&lt;p&gt;The main things when implementing all members is to take care of exceptions. A session cannot recover from an exception. In case you hit one the only solution is to close the session. &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:blue;"&gt;internal&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;NhibernateHelper&lt;/span&gt;&lt;span style="COLOR:black;"&gt; : &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;INhibernateHelper&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;private&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;static&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;readonly&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;ISessionFactory&lt;/span&gt;&lt;span style="COLOR:black;"&gt; sessionFactory; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;static&lt;/span&gt;&lt;span style="COLOR:black;"&gt; NhibernateHelper() &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Configuration&lt;/span&gt;&lt;span style="COLOR:black;"&gt; cfg = &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;Configuration&lt;/span&gt;&lt;span style="COLOR:black;"&gt;(); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;IDictionary&lt;/span&gt;&lt;span style="COLOR:black;"&gt; props = &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;Hashtable&lt;/span&gt;&lt;span style="COLOR:black;"&gt;(); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; props.Add(&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;hibernate.dialect&amp;quot;&lt;/span&gt;&lt;span style="COLOR:black;"&gt;, &lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;NHibernate.Dialect.MsSql2000Dialect&amp;quot;&lt;/span&gt;&lt;span style="COLOR:black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; props.Add(&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;hibernate.connection.provider&amp;quot;&lt;/span&gt;&lt;span style="COLOR:black;"&gt;, &lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;NHibernate.Connection.DriverConnectionProvider&amp;quot;&lt;/span&gt;&lt;span style="COLOR:black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; props.Add(&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;hibernate.connection.connection_string&amp;quot;&lt;/span&gt;&lt;span style="COLOR:black;"&gt;, &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;nHibernateConnectionHelper&lt;/span&gt;&lt;span style="COLOR:black;"&gt;.connectionString); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cfg.SetProperties(props); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cfg.AddAssembly(&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;nHibernateConnectionHelper&lt;/span&gt;&lt;span style="COLOR:black;"&gt;.domainAssembly); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sessionFactory = cfg.BuildSessionFactory(); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;private&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;static&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt; connectionString &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Type&lt;/span&gt;&lt;span style="COLOR:black;"&gt; typeOfConnectionProvider = &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;typeof&lt;/span&gt;&lt;span style="COLOR:black;"&gt; (NHibernate.Connection.&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;DriverConnectionProvider&lt;/span&gt;&lt;span style="COLOR:black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;PropertyInfo&lt;/span&gt;&lt;span style="COLOR:black;"&gt; ConnectionStringPropertyInfo = typeOfConnectionProvider.GetProperty(&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;ConnectionString&amp;quot;&lt;/span&gt;&lt;span style="COLOR:black;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;BindingFlags&lt;/span&gt;&lt;span style="COLOR:black;"&gt;.Instance | &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;BindingFlags&lt;/span&gt;&lt;span style="COLOR:black;"&gt;.NonPublic); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&lt;span style="COLOR:black;"&gt; (&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt;) ConnectionStringPropertyInfo.GetValue(sessionFactory.ConnectionProvider, &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;&lt;span style="COLOR:black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;private&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;readonly&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;ISession&lt;/span&gt;&lt;span style="COLOR:black;"&gt; currentSession; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;internal&lt;/span&gt;&lt;span style="COLOR:black;"&gt; NhibernateHelper() &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;if&lt;/span&gt;&lt;span style="COLOR:black;"&gt; (&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt;.IsNullOrEmpty(&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;nHibernateConnectionHelper&lt;/span&gt;&lt;span style="COLOR:black;"&gt;.connectionString)) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;throw&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:#2b91af;"&gt;Exception&lt;/span&gt;&lt;span style="COLOR:black;"&gt;(&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Sessionfactory needs a connectionstring&amp;quot;&lt;/span&gt;&lt;span style="COLOR:black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;if&lt;/span&gt;&lt;span style="COLOR:black;"&gt; (&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;nHibernateConnectionHelper&lt;/span&gt;&lt;span style="COLOR:black;"&gt;.connectionString != connectionString) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;throw&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:#2b91af;"&gt;Exception&lt;/span&gt;&lt;span style="COLOR:black;"&gt;(&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt;.Format(&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Sessionfactory connection allready initialized as {0}&amp;quot;&lt;/span&gt;&lt;span style="COLOR:black;"&gt;,connectionString)); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentSession = sessionFactory.OpenSession(); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;private&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;ITransaction&lt;/span&gt;&lt;span style="COLOR:black;"&gt; tx = &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;&lt;span style="COLOR:black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;void&lt;/span&gt;&lt;span style="COLOR:black;"&gt; BeginTransAction() &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;if&lt;/span&gt;&lt;span style="COLOR:black;"&gt; (tx == &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;&lt;span style="COLOR:black;"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;try&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tx = currentSession.BeginTransaction(); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;catch&lt;/span&gt;&lt;span style="COLOR:black;"&gt; (&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Exception&lt;/span&gt;&lt;span style="COLOR:black;"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentSession.Close(); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;throw&lt;/span&gt;&lt;span style="COLOR:black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;void&lt;/span&gt;&lt;span style="COLOR:black;"&gt; Commit() &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;if&lt;/span&gt;&lt;span style="COLOR:black;"&gt; (tx == &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;&lt;span style="COLOR:black;"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;try&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentSession.Flush(); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;catch&lt;/span&gt;&lt;span style="COLOR:black;"&gt;(&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Exception&lt;/span&gt;&lt;span style="COLOR:black;"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentSession.Close(); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;throw&lt;/span&gt;&lt;span style="COLOR:black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;else&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;try&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tx.Commit(); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;catch&lt;/span&gt;&lt;span style="COLOR:black;"&gt; (&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Exception&lt;/span&gt;&lt;span style="COLOR:black;"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tx.Rollback(); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentSession.Close(); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;finally&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tx = &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;&lt;span style="COLOR:black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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:#2b91af;"&gt;IQuery&lt;/span&gt;&lt;span style="COLOR:black;"&gt; Query(&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt; query) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&lt;span style="COLOR:black;"&gt; currentSession.CreateQuery(query); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;void&lt;/span&gt;&lt;span style="COLOR:black;"&gt; CloseSession() &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentSession.Close(); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;void&lt;/span&gt;&lt;span style="COLOR:black;"&gt; Save(&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;object&lt;/span&gt;&lt;span style="COLOR:black;"&gt; dObject) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;try&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentSession.SaveOrUpdate(dObject); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;catch&lt;/span&gt;&lt;span style="COLOR:black;"&gt; (&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Exception&lt;/span&gt;&lt;span style="COLOR:black;"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentSession.Close(); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;throw&lt;/span&gt;&lt;span style="COLOR:black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;void&lt;/span&gt;&lt;span style="COLOR:black;"&gt; Delete(&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;object&lt;/span&gt;&lt;span style="COLOR:black;"&gt; o) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;try&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentSession.Delete(o); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;catch&lt;/span&gt;&lt;span style="COLOR:black;"&gt; (&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Exception&lt;/span&gt;&lt;span style="COLOR:black;"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentSession.Close(); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;throw&lt;/span&gt;&lt;span style="COLOR:black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;void&lt;/span&gt;&lt;span style="COLOR:black;"&gt; Dispose() &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentSession.Dispose(); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&lt;span style="COLOR:black;"&gt; T UniqueResult&amp;lt;T&amp;gt;(&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;IQuery&lt;/span&gt;&lt;span style="COLOR:black;"&gt; query) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;try&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&lt;span style="COLOR:black;"&gt; query.UniqueResult&amp;lt;T&amp;gt;(); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;catch&lt;/span&gt;&lt;span style="COLOR:black;"&gt; (&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Exception&lt;/span&gt;&lt;span style="COLOR:black;"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentSession.Close(); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;throw&lt;/span&gt;&lt;span style="COLOR:black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&lt;span style="COLOR:black;"&gt; System.Collections.Generic.&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;IList&lt;/span&gt;&lt;span style="COLOR:black;"&gt;&amp;lt;T&amp;gt; ListResult&amp;lt;T&amp;gt;(&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;IQuery&lt;/span&gt;&lt;span style="COLOR:black;"&gt; query) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;try&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&lt;span style="COLOR:black;"&gt; query.List&amp;lt;T&amp;gt;(); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;catch&lt;/span&gt;&lt;span style="COLOR:black;"&gt; (&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Exception&lt;/span&gt;&lt;span style="COLOR:black;"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentSession.Close(); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;throw&lt;/span&gt;&lt;span style="COLOR:black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&lt;span style="COLOR:black;"&gt; System.Collections.Generic.&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;IEnumerable&lt;/span&gt;&lt;span style="COLOR:black;"&gt;&amp;lt;T&amp;gt; EnumerateResult&amp;lt;T&amp;gt;(&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;IQuery&lt;/span&gt;&lt;span style="COLOR:black;"&gt; query) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;try&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&lt;span style="COLOR:black;"&gt; query.Enumerable&amp;lt;T&amp;gt;(); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;catch&lt;/span&gt;&lt;span style="COLOR:black;"&gt; (&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Exception&lt;/span&gt;&lt;span style="COLOR:black;"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentSession.Close(); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;throw&lt;/span&gt;&lt;span style="COLOR:black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;When hitting an exception all this helper does is clean up after which it rethrows the exception, it&amp;#39;s up to its user to take further action. &lt;/p&gt;
&lt;p&gt;All database interaction through nHibernate is now stuffed in this helper class. It can be used by a generic repository. &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&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;Repository&lt;/span&gt;&lt;span style="COLOR:black;"&gt;&amp;lt;T&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;private&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;readonly&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;INhibernateHelper&lt;/span&gt;&lt;span style="COLOR:black;"&gt; hibernate; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;private&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;readonly&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt; className; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&lt;span style="COLOR:black;"&gt; Repository(&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;INhibernateHelper&lt;/span&gt;&lt;span style="COLOR:black;"&gt; hibernate) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; className = &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;typeof&lt;/span&gt;&lt;span style="COLOR:black;"&gt;(T).Name; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;&lt;span style="COLOR:black;"&gt;.hibernate = hibernate; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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:#2b91af;"&gt;IQuery&lt;/span&gt;&lt;span style="COLOR:black;"&gt; BuildQuery(&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt; queryString) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&lt;span style="COLOR:black;"&gt; hibernate.Query(&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt;.Format(&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;from {0} where {1}&amp;quot;&lt;/span&gt;&lt;span style="COLOR:black;"&gt;, className, queryString)); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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:#2b91af;"&gt;IList&lt;/span&gt;&lt;span style="COLOR:black;"&gt;&amp;lt;T&amp;gt; ListAll(&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt; orderBy) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt; queryString = &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt;.Format(&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;from {0} order by {1}&amp;quot;&lt;/span&gt;&lt;span style="COLOR:black;"&gt;, className, orderBy); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;IQuery&lt;/span&gt;&lt;span style="COLOR:black;"&gt; query = hibernate.Query(queryString); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&lt;span style="COLOR:black;"&gt; hibernate.ListResult&amp;lt;T&amp;gt;(query); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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:#2b91af;"&gt;IEnumerable&lt;/span&gt;&lt;span style="COLOR:black;"&gt;&amp;lt;T&amp;gt; EnumerateAll() &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt; queryString = &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt;.Format(&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;from {0}&amp;quot;&lt;/span&gt;&lt;span style="COLOR:black;"&gt;, className); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;IQuery&lt;/span&gt;&lt;span style="COLOR:black;"&gt; query = hibernate.Query(queryString); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&lt;span style="COLOR:black;"&gt; hibernate.EnumerateResult&amp;lt;T&amp;gt;(query); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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:#2b91af;"&gt;IEnumerable&lt;/span&gt;&lt;span style="COLOR:black;"&gt;&amp;lt;T&amp;gt; EnumerateInPeriod(&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt; propertyName, &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;DateTime&lt;/span&gt;&lt;span style="COLOR:black;"&gt; from, &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;DateTime&lt;/span&gt;&lt;span style="COLOR:black;"&gt; till) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;if&lt;/span&gt;&lt;span style="COLOR:black;"&gt; (from == &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;DateTime&lt;/span&gt;&lt;span style="COLOR:black;"&gt;.MinValue) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from = &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;DateTime&lt;/span&gt;&lt;span style="COLOR:black;"&gt;(1753, 1, 1); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;if&lt;/span&gt;&lt;span style="COLOR:black;"&gt; (till == &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;DateTime&lt;/span&gt;&lt;span style="COLOR:black;"&gt;.MaxValue) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; till = &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;DateTime&lt;/span&gt;&lt;span style="COLOR:black;"&gt;(9999, 12, 31); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt; queryString = &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt;.Format(&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;from {0} where {1} &amp;gt;= ? and&amp;nbsp; {1} &amp;lt; ?&amp;quot;&lt;/span&gt;&lt;span style="COLOR:black;"&gt;, className, propertyName); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;IQuery&lt;/span&gt;&lt;span style="COLOR:black;"&gt; query = hibernate.Query(queryString); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; query.SetDateTime(0, from); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; query.SetDateTime(1, till); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&lt;span style="COLOR:black;"&gt; hibernate.EnumerateResult&amp;lt;T&amp;gt;(query); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&lt;span style="COLOR:black;"&gt; T FindUnique(&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt; propertyName, &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt; propertyValue) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt; queryString = &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt;.Format(&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;from {0} where {1}=?&amp;quot;&lt;/span&gt;&lt;span style="COLOR:black;"&gt;, className, propertyName); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;IQuery&lt;/span&gt;&lt;span style="COLOR:black;"&gt; query = hibernate.Query(queryString); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; query.SetString(0, propertyValue); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&lt;span style="COLOR:black;"&gt; hibernate.UniqueResult&amp;lt;T&amp;gt;(query); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&lt;span style="COLOR:black;"&gt; T FindUnique(&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt; propertyName, &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;long&lt;/span&gt;&lt;span style="COLOR:black;"&gt; propertyValue) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt; queryString = &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt;.Format(&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;from {0} where {1}=?&amp;quot;&lt;/span&gt;&lt;span style="COLOR:black;"&gt;, className, propertyName); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;IQuery&lt;/span&gt;&lt;span style="COLOR:black;"&gt; query = hibernate.Query(queryString); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; query.SetInt64(0, propertyValue); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&lt;span style="COLOR:black;"&gt; hibernate.UniqueResult&amp;lt;T&amp;gt;(query); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&lt;span style="COLOR:black;"&gt; T FindUnique(&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;IQuery&lt;/span&gt;&lt;span style="COLOR:black;"&gt; query) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&lt;span style="COLOR:black;"&gt; hibernate.UniqueResult&amp;lt;T&amp;gt;(query); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;void&lt;/span&gt;&lt;span style="COLOR:black;"&gt; Save(T domainObject) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hibernate.Save(domainObject); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The repository receives the helper in its constructor. In a test scenario I can inject mocked persistence here. My repository has methods to retrieve and update data. Quite straightforward ones like &lt;em&gt;ListAll&lt;/em&gt; and more fancy ones like &lt;em&gt;EnumerateInPeriod&lt;/em&gt;. It&amp;#39;s up to you to fulfill your specific needs. To build the hibernate queries the name of the class is needed. In the constructor this name is pulled from the Type parameter. &lt;/p&gt;
&lt;p&gt;Here&amp;#39;s an example how to use this repository. Given this domain class: &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&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;School&lt;/span&gt;&lt;span style="COLOR:black;"&gt; : &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;ValidatableDomainObject&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;private&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;span style="COLOR:black;"&gt; id; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;private&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt; omschrijving; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;private&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;static&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt; noSchool = &lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Geen binding&amp;quot;&lt;/span&gt;&lt;span style="COLOR:black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;virtual&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;span style="COLOR:black;"&gt; Id &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;&lt;span style="COLOR:black;"&gt; { &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&lt;span style="COLOR:black;"&gt; id; } &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;&lt;span style="COLOR:black;"&gt; { id = &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;value&lt;/span&gt;&lt;span style="COLOR:black;"&gt;; } &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;virtual&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt; Omschrijving &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;&lt;span style="COLOR:black;"&gt; { &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&lt;span style="COLOR:black;"&gt; omschrijving; } &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;&lt;span style="COLOR:black;"&gt; { omschrijving = &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;value&lt;/span&gt;&lt;span style="COLOR:black;"&gt;; } &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;static&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt; NoSchool &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;&lt;span style="COLOR:black;"&gt; { &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&lt;span style="COLOR:black;"&gt; noSchool; } &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;&lt;span style="COLOR:black;"&gt; { noSchool = &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;value&lt;/span&gt;&lt;span style="COLOR:black;"&gt;; } &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;protected&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; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;void&lt;/span&gt;&lt;span style="COLOR:black;"&gt; DoValidate(&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;RepositoryManager&lt;/span&gt;&lt;span style="COLOR:black;"&gt; repositoryManager) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; validateExpression(!&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt;.IsNullOrEmpty(omschrijving), &lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Naam school ontbreekt&amp;quot;&lt;/span&gt;&lt;span style="COLOR:black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;A simple class with some properties and it does validation. A repository for this class will now look like: &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&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;SchoolRepository&lt;/span&gt;&lt;span style="COLOR:black;"&gt; : &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Repository&lt;/span&gt;&lt;span style="COLOR:black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;School&lt;/span&gt;&lt;span style="COLOR:black;"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&lt;span style="COLOR:black;"&gt; SchoolRepository(&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;INhibernateHelper&lt;/span&gt;&lt;span style="COLOR:black;"&gt; hibernate) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;base&lt;/span&gt;&lt;span style="COLOR:black;"&gt;(hibernate) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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:#2b91af;"&gt;School&lt;/span&gt;&lt;span style="COLOR:black;"&gt; OpAfkorting(&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt; afkorting) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&lt;span style="COLOR:black;"&gt; FindUnique(&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;omschrijving&amp;quot;&lt;/span&gt;&lt;span style="COLOR:black;"&gt;, afkorting); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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:#2b91af;"&gt;School&lt;/span&gt;&lt;span style="COLOR:black;"&gt; GeenBinding() &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&lt;span style="COLOR:black;"&gt; OpAfkorting(&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;School&lt;/span&gt;&lt;span style="COLOR:black;"&gt;.NoSchool); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;No big deal; there are two School specific members. The base Repository class does the hard work. &lt;/p&gt;
&lt;p&gt;Now I can create a repository for every domain class in the application. To manage all of these the app needs a &lt;em&gt;RepositoryManager&lt;/em&gt;. This class takes care of creating the hibernate helper and creating specific repositories on demand. This example is a part of such a manager; for the sake of demo it only includes two repositories. All others will follow exactly the same pattern. &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&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;RepositoryManager&lt;/span&gt;&lt;span style="COLOR:black;"&gt; : &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;IDisposable&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;private&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;static&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt; dbConnection = &lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="COLOR:black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;static&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt; DbConnection &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;&lt;span style="COLOR:black;"&gt; { &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&lt;span style="COLOR:black;"&gt; dbConnection; } &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;set&lt;/span&gt;&lt;span style="COLOR:black;"&gt; { dbConnection = &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;value&lt;/span&gt;&lt;span style="COLOR:black;"&gt;; } &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;private&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;readonly&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;INhibernateHelper&lt;/span&gt;&lt;span style="COLOR:black;"&gt; nhHelper; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;private&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;PersoneelRepository&lt;/span&gt;&lt;span style="COLOR:black;"&gt; personeel; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;private&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;SchoolRepository&lt;/span&gt;&lt;span style="COLOR:black;"&gt; school; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt;&lt;span style="COLOR:black;"&gt; RepositoryManager() &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&lt;span style="COLOR:black;"&gt; assemblyName = &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Assembly&lt;/span&gt;&lt;span style="COLOR:black;"&gt;.GetExecutingAssembly().FullName; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nhHelper = &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;NhibernateHelperFactory&lt;/span&gt;&lt;span style="COLOR:black;"&gt;.CreateHelper(dbConnection, assemblyName); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;void&lt;/span&gt;&lt;span style="COLOR:black;"&gt; BeginTransAction() &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nhHelper.BeginTransAction(); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;void&lt;/span&gt;&lt;span style="COLOR:black;"&gt; Commit() &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nhHelper.Commit(); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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:#2b91af;"&gt;PersoneelRepository&lt;/span&gt;&lt;span style="COLOR:black;"&gt; Personeel &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;if&lt;/span&gt;&lt;span style="COLOR:black;"&gt; (personeel == &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;&lt;span style="COLOR:black;"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; personeel = &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;PersoneelRepository&lt;/span&gt;&lt;span style="COLOR:black;"&gt;(nhHelper); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&lt;span style="COLOR:black;"&gt; personeel; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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:#2b91af;"&gt;SchoolRepository&lt;/span&gt;&lt;span style="COLOR:black;"&gt; School &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;get&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;if&lt;/span&gt;&lt;span style="COLOR:black;"&gt; (school == &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;&lt;span style="COLOR:black;"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; school = &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;SchoolRepository&lt;/span&gt;&lt;span style="COLOR:black;"&gt;(nhHelper); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;&lt;span style="COLOR:black;"&gt; school; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt;&lt;span style="COLOR:black;"&gt; IDisposable Members &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &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;void&lt;/span&gt;&lt;span style="COLOR:black;"&gt; Dispose() &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nhHelper.Dispose(); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;&lt;span style="COLOR:black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;To store the database connection string there is a static member. On application setup it has to be initialized just once. The constructor uses the helperfactory discussed in the &lt;a href="http://codebetter.com/blogs/peter.van.ooijen/archive/2008/03/26/wrapping-up-nhibernate.aspx"&gt;previous post&lt;/a&gt;. This manager is in the domain assembly which also contains the hibernate mappings themselves; the name of that assembly is needed for the nHibernate configuration and can be read using the &lt;em&gt;GetExcutingAssembly&lt;/em&gt; method. &lt;/p&gt;
&lt;p&gt;The repositories all share the same session wrapped up in the helper. Transactions are managed at this level. And so a transaction easily spans objects from several domain classes. The helper has to be disposed to clean up the session. The repository manager implements &lt;em&gt;Idisposable&lt;/em&gt; and will clean up the helper in its implementation of &lt;em&gt;Dispose&lt;/em&gt;. &lt;/p&gt;
&lt;p&gt;Let&amp;#39;s see it in action &lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:blue;"&gt;using&lt;/span&gt;&lt;span style="COLOR:black;"&gt;(&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;RepositoryManager&lt;/span&gt;&lt;span style="COLOR:black;"&gt; repoManager = &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;RepositoryManager&lt;/span&gt;&lt;span style="COLOR:black;"&gt;()) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;{ &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; repoManager.BeginTransAction(); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;School&lt;/span&gt;&lt;span style="COLOR:black;"&gt; mySchool = repoManager.School.OpAfkorting(&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;&amp;quot;BADM&amp;quot;&lt;/span&gt;&lt;span style="COLOR:black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;IEnumerable&lt;/span&gt;&lt;span style="COLOR:black;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Personeel&lt;/span&gt;&lt;span style="COLOR:black;"&gt;&amp;gt; persList = repoManager.Personeel.EnumerateAll(); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;foreach&lt;/span&gt;&lt;span style="COLOR:black;"&gt; (&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Personeel&lt;/span&gt;&lt;span style="COLOR:black;"&gt; personeel &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;in&lt;/span&gt;&lt;span style="COLOR:black;"&gt; persList) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:courier new;"&gt;&lt;span style="COLOR:black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;if&lt;/span&gt;&lt;span style="COLOR:black;"&gt; (personeel.IsValid(repoManager) &amp;amp;&amp;amp; (personeel.UitDienst)) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; personeel.VerbondenAanSchool = mySchool; &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; repoManager.Personeel.Save(personeel);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; repoManager.Commit(); &lt;/span&gt;&lt;/p&gt;
&lt;p style="BACKGROUND:white;"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:black;FONT-FAMILY:courier new;"&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;In one transaction I update all &amp;quot;personeel&amp;quot; which meets certain criteria. Note that I pass the repository-manager to the validation method. The validation can use it to do things like data look up. &lt;/p&gt;
&lt;p&gt;Well that&amp;#39;s about it. I do hope this provided you with some insights on a