<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&quot;DEMHQXc8eyp7ImA9WxNUGU0.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202</id><updated>2009-11-10T23:27:10.973-03:00</updated><title>HunabKu</title><subtitle type="html">IT experiences</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>129</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/Hunabku" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry gd:etag="W/&quot;A0UEQX89eSp7ImA9WxNUEUQ.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-2342921322517501738</id><published>2009-11-02T19:00:00.000-03:00</published><updated>2009-11-02T19:00:00.161-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-02T19:00:00.161-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Validator" /><category scheme="http://www.blogger.com/atom/ns#" term="Castle Windsor" /><category scheme="http://www.blogger.com/atom/ns#" term="Fluent-configuration" /><category scheme="http://www.blogger.com/atom/ns#" term="English" /><title>Validation Abstraction: Custom</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/2342921322517501738/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/11/validation-abstraction-custom.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/2342921322517501738?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/2342921322517501738?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/11/validation-abstraction-custom.html" title="Validation Abstraction: Custom" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><content type="html">If you have read this post you know I’m having some psychological problem at work: multi-personality.  My dear friend Fabio-NHV said me: hey man! I have a very good OSS validation framework strongly recommended if you are validating entities you are using with NHibernate.  And I said: Cool!! but your framework is only an option for me… soon or later I’ll use something else and, btw, I need to mix
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aTy-LYywrDaPxmHMQgHjEqIJfBU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aTy-LYywrDaPxmHMQgHjEqIJfBU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/aTy-LYywrDaPxmHMQgHjEqIJfBU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aTy-LYywrDaPxmHMQgHjEqIJfBU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=rYjfVh7b5r4:kegxOobvxJc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;CUUERH06eSp7ImA9WxNVGUU.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-4521835956636068830</id><published>2009-10-31T07:00:00.000-03:00</published><updated>2009-10-31T07:00:05.311-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-31T07:00:05.311-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Validator" /><category scheme="http://www.blogger.com/atom/ns#" term="NHibernate" /><category scheme="http://www.blogger.com/atom/ns#" term="Fluent-configuration" /><category scheme="http://www.blogger.com/atom/ns#" term="English" /><title>Validation through persistence: not synchronized</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/4521835956636068830/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/validation-through-persistence-not.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/4521835956636068830?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/4521835956636068830?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/validation-through-persistence-not.html" title="Validation through persistence: not synchronized" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><content type="html">In this series you saw mostly the configuration of NHibernate.Validator through Loquacious (our configuration based on fluent-interface).  What is the ValidationDef&lt;T&amp;gt; ?  If you are using the Satisfier (validation through lambdas) the ValidationDef become the class whose responsibility is validate a instance of T.  If you need some validation, involving the persistence, and you want do it through
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3jdUshXYAZyF7R3qjWWUO0fzeU4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3jdUshXYAZyF7R3qjWWUO0fzeU4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3jdUshXYAZyF7R3qjWWUO0fzeU4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3jdUshXYAZyF7R3qjWWUO0fzeU4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=ViMMY7JEPJY:1_6e2kOPYaw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;DE8ER3o6fSp7ImA9WxNVGEQ.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-8610713714312549412</id><published>2009-10-30T07:00:00.000-03:00</published><updated>2009-10-30T07:00:06.415-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-30T07:00:06.415-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Validator" /><category scheme="http://www.blogger.com/atom/ns#" term="NHibernate" /><category scheme="http://www.blogger.com/atom/ns#" term="Fluent-configuration" /><category scheme="http://www.blogger.com/atom/ns#" term="English" /><title>Validation through persistence: synchronized</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/8610713714312549412/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/validation-through-persistence.html#comment-form" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/8610713714312549412?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/8610713714312549412?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/validation-through-persistence.html" title="Validation through persistence: synchronized" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">7</thr:total><content type="html">This post is about one possible answer to the question mememem ask me in this post (ah… nice nick).  The task is create a validator to validate the uniqueness, of an entity instance, using some properties’ values instead its POID (Persistence Object ID).  The implementation  public class BlogPost{   public string Title { get; set; }   public DateTime Date { get; set; }   public string Content { 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BvYqCdubgMVe1oKaC-2grMp52oA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BvYqCdubgMVe1oKaC-2grMp52oA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BvYqCdubgMVe1oKaC-2grMp52oA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BvYqCdubgMVe1oKaC-2grMp52oA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=mgdv9p8znQw:nazO3009hOE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;D0MERXc6fip7ImA9WxNVGE4.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-1953686190466300560</id><published>2009-10-29T13:51:00.003-03:00</published><updated>2009-10-29T13:56:44.916-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-29T13:56:44.916-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NHibernate" /><category scheme="http://www.blogger.com/atom/ns#" term="Entity Framework" /><category scheme="http://www.blogger.com/atom/ns#" term="English" /><title>NHibernate visual Class and mapping generator integrated with VisualStudio2010</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/1953686190466300560/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/nhibernate-visual-class-and-mapping.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/1953686190466300560?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/1953686190466300560?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/nhibernate-visual-class-and-mapping.html" title="NHibernate visual Class and mapping generator integrated with VisualStudio2010" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><content type="html">Do you remember this post ?  Now Microsoft gave us a step-by-step guide : POCO Templates for the Entity Framework  Fantastic!!!  Now we need a good soul starting the integration with NHibernate to generate POCO and mappings.  There will be a little difference:  The POCO template generates Entities that supports change notification.
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/W8iu0NtLUKihuWPf5IgW-z9aQXA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W8iu0NtLUKihuWPf5IgW-z9aQXA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/W8iu0NtLUKihuWPf5IgW-z9aQXA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W8iu0NtLUKihuWPf5IgW-z9aQXA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=hl9gFgvlMI8:D0rrOM_3QEc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;CkMERnY8cSp7ImA9WxNVGEw.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-4150307049285084134</id><published>2009-10-29T07:00:00.001-03:00</published><updated>2009-10-29T07:00:07.879-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-29T07:00:07.879-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Validator" /><category scheme="http://www.blogger.com/atom/ns#" term="Fluent-configuration" /><category scheme="http://www.blogger.com/atom/ns#" term="English" /><title>NHibernate.Validator &amp; NHibernate</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/4150307049285084134/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/nhibernatevalidator-nhibernate.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/4150307049285084134?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/4150307049285084134?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/nhibernatevalidator-nhibernate.html" title="NHibernate.Validator &amp;amp; NHibernate" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><content type="html">The validation is defined as a classic cross cutting concern… well… if we are talking about that we need to validate something everywhere I can agree with that definition, but if we are talking about the validation of domain entities I don’t agree.  The validation of a domain-entity shouldn’t happen in the persistence-layer nor in the presentation-layer and even less in the persistence itself.  
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/G7Q3OcawVyxTzQ5Tybr7NCWeLMA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/G7Q3OcawVyxTzQ5Tybr7NCWeLMA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/G7Q3OcawVyxTzQ5Tybr7NCWeLMA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/G7Q3OcawVyxTzQ5Tybr7NCWeLMA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=MtxoETwpXfg:1MmIeSgjd3Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;DkcFR3w-eip7ImA9WxNVF08.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-1531277984124609766</id><published>2009-10-28T07:00:00.001-03:00</published><updated>2009-10-28T07:00:16.252-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-28T07:00:16.252-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Validator" /><category scheme="http://www.blogger.com/atom/ns#" term="Fluent-configuration" /><category scheme="http://www.blogger.com/atom/ns#" term="English" /><title>NHibernate.Validator : Customizing messages (Message Interpolator)</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/1531277984124609766/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/nhibernatevalidator-customizing_28.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/1531277984124609766?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/1531277984124609766?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/nhibernatevalidator-customizing_28.html" title="NHibernate.Validator : Customizing messages (Message Interpolator)" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">The message interpolator is the responsible of the messages translation/composition. In the coming soon version (NHV-1.2.0) we had increase its power (and refactorized its implementation).  Has default NHV has two implementations: DefaultMessageInterpolatorAggregator and DefaultMessageInterpolator.  What is the usual you have seen in NHibernate’s eco-system ?  Yes, you are right: Injectability!!!
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4pWeFGfL-c58I8nzsKclZ-NE_w8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4pWeFGfL-c58I8nzsKclZ-NE_w8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4pWeFGfL-c58I8nzsKclZ-NE_w8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4pWeFGfL-c58I8nzsKclZ-NE_w8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=uL3ql7-DoAM:kOxoRSHBo08:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;DUEFRnw6fCp7ImA9WxNVFk4.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-1790329372848272003</id><published>2009-10-27T07:00:00.002-03:00</published><updated>2009-10-27T07:00:17.214-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-27T07:00:17.214-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Validator" /><category scheme="http://www.blogger.com/atom/ns#" term="Fluent-configuration" /><category scheme="http://www.blogger.com/atom/ns#" term="English" /><title>NHibernate.Validator : Customizing messages (bases)</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/1790329372848272003/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/nhibernatevalidator-customizing.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/1790329372848272003?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/1790329372848272003?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/nhibernatevalidator-customizing.html" title="NHibernate.Validator : Customizing messages (bases)" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><content type="html">One of the most powerful feature of NHibernate.Validator is its way to manage messages.  In this post are the bases of the massage customization.  The Price  In the last moth this blog was visited from 101 countries but NHibernate.Validator has only 8 translations. The available cultures are: en, es, it, fr, de, nl, lv, pl. Are you seeing the translation in your language ? you don’t ? What you 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dssuV3gqa2P7sa299kI0QorYQeU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dssuV3gqa2P7sa299kI0QorYQeU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dssuV3gqa2P7sa299kI0QorYQeU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dssuV3gqa2P7sa299kI0QorYQeU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=zTE9uob7RZM:UEjmEGMRI68:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;A0UCQ3gycCp7ImA9WxNVFUg.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-3205821911232617123</id><published>2009-10-26T05:00:00.006-03:00</published><updated>2009-10-26T09:14:22.698-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-26T09:14:22.698-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Validator" /><category scheme="http://www.blogger.com/atom/ns#" term="Fluent-configuration" /><category scheme="http://www.blogger.com/atom/ns#" term="English" /><title>NHibernate.Validator : Extending ValidationDef</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/3205821911232617123/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/nhibernatevalidator-extending_26.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/3205821911232617123?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/3205821911232617123?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/nhibernatevalidator-extending_26.html" title="NHibernate.Validator : Extending ValidationDef" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><content type="html">In various applications I’m using my implementation of Range.  public interface IRange&lt;T&amp;gt; : IEquatable&lt;IRange&lt;T&amp;gt;&amp;gt; where T : IComparable&lt;T&amp;gt;{T LowLimit { get; }T HighLimit { get; }bool IsEmpty { get; }bool Includes(T value);bool Includes(IRange&lt;T&amp;gt; other);bool Overlaps(IRange&lt;T&amp;gt; other);}As you can imagine I’m using it to represent various kind of ranges and in each usage I need to validate the range
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1IIMYX8C3wKAggLdIRFvntwq9mE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1IIMYX8C3wKAggLdIRFvntwq9mE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1IIMYX8C3wKAggLdIRFvntwq9mE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1IIMYX8C3wKAggLdIRFvntwq9mE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=m6Yd6UgaJL0:qOvgw2_Ab70:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;AkMEQHg_eip7ImA9WxNVE0o.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-2122996666044832186</id><published>2009-10-24T07:00:00.000-03:00</published><updated>2009-10-24T07:00:01.642-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-24T07:00:01.642-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Validator" /><category scheme="http://www.blogger.com/atom/ns#" term="Fluent-configuration" /><category scheme="http://www.blogger.com/atom/ns#" term="English" /><title>NHibernate.Validator : The “Satisfy” way of custom Validators</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/2122996666044832186/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/nhibernatevalidator-satisfy-way-of.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/2122996666044832186?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/2122996666044832186?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/nhibernatevalidator-satisfy-way-of.html" title="NHibernate.Validator : The “Satisfy” way of custom Validators" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><content type="html">The Satisfy (perhaps it sound familiar to some SharpTestsEx users ;) ).  To show how it work the example is a constraint for Person.Name: a Name is significant when it has more than three characters, is composed by letters and the first letter is in uppercase.  To create a that validator, in the classic way, we should create an Attribute implementing IRuleArgs and then a class implementing 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vylIAoMNkjs1T-8R8C8G5Oa2Xts/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vylIAoMNkjs1T-8R8C8G5Oa2Xts/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vylIAoMNkjs1T-8R8C8G5Oa2Xts/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vylIAoMNkjs1T-8R8C8G5Oa2Xts/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=SfWK6bXvzLI:pdKBD3bMMgo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;CEcEQ3wzfSp7ImA9WxNVEkQ.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-4644927365319852419</id><published>2009-10-23T07:00:00.001-03:00</published><updated>2009-10-23T07:00:02.285-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-23T07:00:02.285-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Validator" /><category scheme="http://www.blogger.com/atom/ns#" term="Fluent-configuration" /><category scheme="http://www.blogger.com/atom/ns#" term="English" /><title>NHibernate.Validator : Fine grained and polymorphic validation</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/4644927365319852419/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/nhibernatevalidator-fine-grained-and.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/4644927365319852419?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/4644927365319852419?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/nhibernatevalidator-fine-grained-and.html" title="NHibernate.Validator : Fine grained and polymorphic validation" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><content type="html">If you know that you can define constraints for classes, properties and even for field, what mean “Fine grained validation” ?  In NHV, when you define a validator you are defining a validator for a System.Type… well… for real you can define a validator for various types but let me simplify the concept a little bit (parafrasando lo psico nano: “mi consenta”).  In OOP the Type can be polymorphic 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QM5kyNyHAXwU4Qm6T__QbjQFFOw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QM5kyNyHAXwU4Qm6T__QbjQFFOw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QM5kyNyHAXwU4Qm6T__QbjQFFOw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QM5kyNyHAXwU4Qm6T__QbjQFFOw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=TkALHhRpRMM:2qCQk9g56qg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;D0EEQXY-eSp7ImA9WxNVEk0.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-4136650433748413271</id><published>2009-10-22T07:00:00.002-03:00</published><updated>2009-10-22T07:00:00.851-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-22T07:00:00.851-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Validator" /><category scheme="http://www.blogger.com/atom/ns#" term="Fluent-configuration" /><category scheme="http://www.blogger.com/atom/ns#" term="English" /><title>NHibernate.Validator : Extending Loquacious configuration</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/4136650433748413271/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/nhibernatevalidator-extending.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/4136650433748413271?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/4136650433748413271?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/nhibernatevalidator-extending.html" title="NHibernate.Validator : Extending Loquacious configuration" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><content type="html">The needs to extend the configuration come when you having some custom and reusable validators.  For this post I will use a constraint to solve : if a string property is null or empty it is valid, but if it is not empty it must satisfy the minimal required number of characters.  Creating the Validator  The first step is create a class to hold the information needed during validation; in this case
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xRPWbzqV2vuUO4mWqXRbvTsOPtM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xRPWbzqV2vuUO4mWqXRbvTsOPtM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xRPWbzqV2vuUO4mWqXRbvTsOPtM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xRPWbzqV2vuUO4mWqXRbvTsOPtM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=wYcR5UJK544:nMYRC-fkt2E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;DUQAR3w9eCp7ImA9WxNVFEs.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-8074874128728670605</id><published>2009-10-21T02:21:00.008-03:00</published><updated>2009-10-25T07:42:26.260-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-25T07:42:26.260-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Validator" /><category scheme="http://www.blogger.com/atom/ns#" term="NHibernate" /><category scheme="http://www.blogger.com/atom/ns#" term="English" /><title>Advanced NHibernate.Validator</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/8074874128728670605/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/advanced-nhibernatevalidator.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/8074874128728670605?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/8074874128728670605?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/advanced-nhibernatevalidator.html" title="Advanced NHibernate.Validator" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><content type="html">Since long time ago I’m not writing posts about the usage of NHibernate.Validator. I wrote the post “Diving in NHibernate.Validator” because I saw some wrong examples, and even a wrong usage in another framework using NHV.  Yesterday, talking with José Romaniello, I have realized how much poor is our documentation and how few are our examples.  I have decided to begin a new series of posts on NHV
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5SBqpjxhZelWW92r66N6qCFdS0c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5SBqpjxhZelWW92r66N6qCFdS0c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5SBqpjxhZelWW92r66N6qCFdS0c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5SBqpjxhZelWW92r66N6qCFdS0c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=NSFOoFU1lI4:FX1aUV4Wspg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;A0UMSHs9eCp7ImA9WxNWGU8.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-4483499501740512631</id><published>2009-10-19T02:13:00.002-03:00</published><updated>2009-10-19T02:14:49.560-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-19T02:14:49.560-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Validator" /><category scheme="http://www.blogger.com/atom/ns#" term="NHibernate" /><category scheme="http://www.blogger.com/atom/ns#" term="Fluent-configuration" /><category scheme="http://www.blogger.com/atom/ns#" term="English" /><title>NHibernate.Validator : easy Entity Validator via Loquacious</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/4483499501740512631/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/nhibernatevalidator-easy-entity.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/4483499501740512631?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/4483499501740512631?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/nhibernatevalidator-easy-entity.html" title="NHibernate.Validator : easy Entity Validator via Loquacious" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><content type="html">In NHV (NHibernate.Validator) we have annoying issue regarding Entity validators (a validator for an entity instance).  You need an entity-validator when the constraint involves more than one property.  A simple and classic example is a range:  public class Range{   public int Start { get; set; }   public int End { get; set; }}To validate it, before today, you must create an Attribute to mark the
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/c7nHZxDZ6oOis3ZYQnrkjj37yh0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/c7nHZxDZ6oOis3ZYQnrkjj37yh0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/c7nHZxDZ6oOis3ZYQnrkjj37yh0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/c7nHZxDZ6oOis3ZYQnrkjj37yh0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=1iIpHrjH6Rc:gpuooPPCbKY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;C0AFRnczfyp7ImA9WxNWGU0.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-6353484777636541767</id><published>2009-10-18T18:34:00.002-03:00</published><updated>2009-10-18T18:35:17.987-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-18T18:35:17.987-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="NHibernate" /><category scheme="http://www.blogger.com/atom/ns#" term="English" /><title>Fixing issues in NHibernate</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/6353484777636541767/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/fixing-issues-in-nhibernate.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/6353484777636541767?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/6353484777636541767?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/fixing-issues-in-nhibernate.html" title="Fixing issues in NHibernate" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">Was     is     perhaps I can rest a little bit and begin the implementation of a new feature in NHibernate.Validator.
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0heRvL6Ar2VTDvmrEql6c_zpu-0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0heRvL6Ar2VTDvmrEql6c_zpu-0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0heRvL6Ar2VTDvmrEql6c_zpu-0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0heRvL6Ar2VTDvmrEql6c_zpu-0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=306kYAAOei4:yghH5Z37NF4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;CU4FSX8_fyp7ImA9WxNWE0o.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-24353561821789169</id><published>2009-10-12T15:56:00.002-03:00</published><updated>2009-10-12T15:58:38.147-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-12T15:58:38.147-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Patterns" /><category scheme="http://www.blogger.com/atom/ns#" term="NHibernate" /><category scheme="http://www.blogger.com/atom/ns#" term="WCF" /><category scheme="http://www.blogger.com/atom/ns#" term="English" /><title>NHibernate &amp; WCF : session-per-call in uNhAddIns</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/24353561821789169/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/nhibernate-wcf-session-per-call-in.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/24353561821789169?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/24353561821789169?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/nhibernate-wcf-session-per-call-in.html" title="NHibernate &amp;amp; WCF : session-per-call in uNhAddIns" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><content type="html">We have added a new project in uNhAddIns to work with NHibernate and WCF.  As you know the most common, and probably the most recommended, way to manage the NH’s session in WCF is session-per-call. The session-per-call pattern has the same behavior of session-per-request where, in this case, call, NH’s session and NH’s transaction has the same life cycle.  There are various ways to add this 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8ZjJz2XiPUOYvl7UQPIQcPYgu7E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8ZjJz2XiPUOYvl7UQPIQcPYgu7E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8ZjJz2XiPUOYvl7UQPIQcPYgu7E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8ZjJz2XiPUOYvl7UQPIQcPYgu7E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=2aiLyKiY42Q:XOQQGkfXEro:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;DE8DQHg5fip7ImA9WxNXGUo.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-4163921695533050295</id><published>2009-10-08T01:38:00.004-03:00</published><updated>2009-10-08T01:41:11.626-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-08T01:41:11.626-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="Alt.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="Validator" /><category scheme="http://www.blogger.com/atom/ns#" term="English" /><title>OSS has users, commercial products has customers, ergo p&amp;p is commercial product</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/4163921695533050295/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/oss-has-users-commercial-products-has.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/4163921695533050295?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/4163921695533050295?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/oss-has-users-commercial-products-has.html" title="OSS has users, commercial products has customers, ergo p&amp;amp;p is commercial product" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total><content type="html">This is a long story and I will try to make it short.  In the JAVA ecosystem some projects developers are trying to find a common way to define a specification for a specific problem. After the definition each project can/will implement specification in his way.  For example, have a look : JSR 303 Bean Validation  I know that ask the same attitude in .NET is something really hard… hopefully the 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/z71B4HWya0plunLgwgUZKtNRrVQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z71B4HWya0plunLgwgUZKtNRrVQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/z71B4HWya0plunLgwgUZKtNRrVQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z71B4HWya0plunLgwgUZKtNRrVQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=SAMK0sebUcI:kdvmsXysTx8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;DkQEQnw8cCp7ImA9WxNXFk4.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-5002510564041397415</id><published>2009-10-04T02:31:00.002-03:00</published><updated>2009-10-04T02:31:43.278-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-04T02:31:43.278-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NHibernate" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><category scheme="http://www.blogger.com/atom/ns#" term="English" /><title>NHibernate dialect for SQL Azure</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/5002510564041397415/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/nhibernate-dialect-for-sql-azure.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/5002510564041397415?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/5002510564041397415?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/nhibernate-dialect-for-sql-azure.html" title="NHibernate dialect for SQL Azure" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">As you read in this post there was a little problem running DAOs integration tests directly with SQL-Azure:  “Heaps can not be replicated tables. Please create a clustered index for the table.”  The problem is generated by this fact :      Because SQL Azure does not support heap tables, a table must have a clustered index. If a table is created without a clustered constraint, a clustered index 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/79ZIfHmC1cr0OPwRiD-PNNO0-9A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/79ZIfHmC1cr0OPwRiD-PNNO0-9A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/79ZIfHmC1cr0OPwRiD-PNNO0-9A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/79ZIfHmC1cr0OPwRiD-PNNO0-9A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=wH2JQx0qoFE:fxp4TdDG_TY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;AkIGQn86eCp7ImA9WxNXFUU.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-5021366884786552915</id><published>2009-10-03T13:46:00.003-03:00</published><updated>2009-10-03T13:48:43.110-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-03T13:48:43.110-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NHibernate" /><category scheme="http://www.blogger.com/atom/ns#" term="ORM" /><category scheme="http://www.blogger.com/atom/ns#" term="English" /><title>How you shouldn’t write your mapping</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/5021366884786552915/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/how-you-shouldnt-write-your-mapping.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/5021366884786552915?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/5021366884786552915?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/10/how-you-shouldnt-write-your-mapping.html" title="How you shouldn’t write your mapping" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><content type="html">More than one time, in my courses, in this blog and in various NH’s users list, I talked about a rule of thumb about mappings: not try to be clear because it obscures.  Have a look to this mapping:  &lt;hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"&amp;gt;   &lt;class name="YourApp.Common.DataObjects.Address, YourApp"          table="Address"&amp;gt;       &lt;id name="Id" type="Int32" unsaved-value="null"&amp;gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7oSLcpX6aMtzp9UKgqLuCsYV0Go/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7oSLcpX6aMtzp9UKgqLuCsYV0Go/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7oSLcpX6aMtzp9UKgqLuCsYV0Go/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7oSLcpX6aMtzp9UKgqLuCsYV0Go/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=zjx99rKubXc:MEfetZ6PfDs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;CEQHSX86cSp7ImA9WxNXEUg.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-1711923950655965442</id><published>2009-09-28T12:38:00.002-03:00</published><updated>2009-09-28T12:38:58.119-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-28T12:38:58.119-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NHibernate" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><category scheme="http://www.blogger.com/atom/ns#" term="English" /><title>Quick news: NHibernate with SQL-Azure</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/1711923950655965442/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/09/quick-news-nhibernate-with-sql-azure.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/1711923950655965442?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/1711923950655965442?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/09/quick-news-nhibernate-with-sql-azure.html" title="Quick news: NHibernate with SQL-Azure" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">Just ran DAOs integration tests (the same of this post) in SQL-AZURE.  All work… even the SchemaExport.  well…well… Not all glitters is gold ;)  Exception: “Heaps can not be replicated tables. Please create a clustered index for the table.”
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SrtMLt_9ckRHq9YXLAa8J8_fQlc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SrtMLt_9ckRHq9YXLAa8J8_fQlc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SrtMLt_9ckRHq9YXLAa8J8_fQlc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SrtMLt_9ckRHq9YXLAa8J8_fQlc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=H1FkIRiYNw8:1-LicT4tw6s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;C08AQ3YyeCp7ImA9WxNXEEQ.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-4447762625560079884</id><published>2009-09-27T16:07:00.005-03:00</published><updated>2009-09-27T19:50:42.890-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-27T19:50:42.890-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tests" /><category scheme="http://www.blogger.com/atom/ns#" term="Patterns" /><category scheme="http://www.blogger.com/atom/ns#" term="NHibernate" /><title>Testing DAOs : the SetUpFixture Attribute</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/4447762625560079884/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/09/testing-daos-setupfixture-attribute.html#comment-form" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/4447762625560079884?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/4447762625560079884?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/09/testing-daos-setupfixture-attribute.html" title="Testing DAOs : the SetUpFixture Attribute" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">7</thr:total><content type="html">Usually I’m testing DAOs for CRUD operations. Using NHibernate, as persistent layer, what we are testing, in practice, is the mapping and all behavior we have defined in it (cascade, associations, types, user-types, custom-collections and so on).  For CRUD operation I mean single entity instance CRUD without test complex queries (to test complex-queries I’m using a different test suite with a 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/isT8k4o0bYg0rByPcnRp1EFlPuA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/isT8k4o0bYg0rByPcnRp1EFlPuA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/isT8k4o0bYg0rByPcnRp1EFlPuA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/isT8k4o0bYg0rByPcnRp1EFlPuA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=gpYoHx0JrKk:IOAhHlS8Sb4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;DkYASXw9cCp7ImA9WxNQFkU.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-607994661685626255</id><published>2009-09-23T02:34:00.002-03:00</published><updated>2009-09-23T02:35:48.268-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-23T02:35:48.268-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tests" /><category scheme="http://www.blogger.com/atom/ns#" term="#TestEx" /><category scheme="http://www.blogger.com/atom/ns#" term="English" /><title>Sharp Tests Ex 0.3.0 : fluent and lambda assertions for MsTests, NUnit and xUnit</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/607994661685626255/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/09/sharp-tests-ex-030-fluent-and-lambda.html#comment-form" title="11 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/607994661685626255?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/607994661685626255?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/09/sharp-tests-ex-030-fluent-and-lambda.html" title="Sharp Tests Ex 0.3.0 : fluent and lambda assertions for MsTests, NUnit and xUnit" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">11</thr:total><content type="html">#TestsEx 0.3.0 was released yesterday.  News  The first news is that #TestsEx is no more a “one-man-show”; Jason Diamond is now part of the team.  The second news is that the new syntax, based on lambda expression, is now available (similar to the one available in NUnitEx). You can see an example in the download page.  var var2 = 2;2.Satisfy(a =&amp;gt; var2 == a);1.Satisfy(a =&amp;gt; a == 1 || a != 0);The 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/e4A05BUe4YFJ76vK9lgb6fhvwQc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e4A05BUe4YFJ76vK9lgb6fhvwQc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/e4A05BUe4YFJ76vK9lgb6fhvwQc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e4A05BUe4YFJ76vK9lgb6fhvwQc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=3Xfiiuq3zik:bowTxXe9OLk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;C0IFQnc-eSp7ImA9WxNQFEg.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-2094082467562469185</id><published>2009-09-19T19:03:00.004-03:00</published><updated>2009-09-20T09:58:33.951-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-20T09:58:33.951-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="Patterns" /><category scheme="http://www.blogger.com/atom/ns#" term="English" /><title>Repository or DAO?: DAO</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/2094082467562469185/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/09/repository-or-dao-dao.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/2094082467562469185?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/2094082467562469185?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/09/repository-or-dao-dao.html" title="Repository or DAO?: DAO" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><content type="html">such question, no? DAO is the anachronism of Data Access Object. On the cloud you can find various definitions of what is a DAO. The follow come from Java ecosystem and is the most complete I found:  The DAO implements the access mechanism required to work with the data source. The data source could be a persistent store like an RDBMS, an external service like a B2B exchange, a repository like an
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/w5Zp9jL5xIc4pdaoGlQqay4izVU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w5Zp9jL5xIc4pdaoGlQqay4izVU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/w5Zp9jL5xIc4pdaoGlQqay4izVU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w5Zp9jL5xIc4pdaoGlQqay4izVU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=Gb3J_BQgZG0:4StIzmOcXHA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;CUcEQH88eCp7ImA9WxNQEUs.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-7417001930279414341</id><published>2009-09-17T01:38:00.003-03:00</published><updated>2009-09-17T01:50:01.170-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-17T01:50:01.170-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="NHibernate" /><category scheme="http://www.blogger.com/atom/ns#" term="Castle Windsor" /><category scheme="http://www.blogger.com/atom/ns#" term="session management" /><category scheme="http://www.blogger.com/atom/ns#" term="English" /><title>Configure SessionFactory Providers</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/7417001930279414341/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/09/configure-sessionfactory-providers.html#comment-form" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/7417001930279414341?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/7417001930279414341?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/09/configure-sessionfactory-providers.html" title="Configure SessionFactory Providers" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">6</thr:total><content type="html">This is about a pending task from long time ago… sorry for those waiting for it.  In the AOP example of CpBT you probably saw a class named SessionFactoryProvider; that class was wrote before CpBT and it can be used in others Contexts (ICurrentSessionContext).  ISessionFactoryProvider  The ISessionFactoryProvider is the contract for the implementation responsible for providing NHibernate’s 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/n_hIk3Ytp7VT5j3j8eVNIekX1fo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n_hIk3Ytp7VT5j3j8eVNIekX1fo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/n_hIk3Ytp7VT5j3j8eVNIekX1fo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n_hIk3Ytp7VT5j3j8eVNIekX1fo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=R7Twb5_QH9I:XPAEt1GXE5g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;DU8MQXY4cSp7ImA9WxNQE0Q.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-869084921460645945</id><published>2009-09-13T17:25:00.004-03:00</published><updated>2009-09-19T19:04:40.839-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-19T19:04:40.839-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="Patterns" /><category scheme="http://www.blogger.com/atom/ns#" term="NHibernate" /><category scheme="http://www.blogger.com/atom/ns#" term="ORM" /><title>Repository or DAO?: Repository</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/869084921460645945/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/09/repository-or-dao-repository.html#comment-form" title="13 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/869084921460645945?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/869084921460645945?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/09/repository-or-dao-repository.html" title="Repository or DAO?: Repository" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">13</thr:total><content type="html">such question, no?
The definition of Repository pattern is extremely clear (as usual coming from where it come). What was not absolutely clear is how developers are using it… perhaps my interpretation of these words is a little bit extreme.
A Repository mediates between the domain and data mapping layers, acting like an in-memory domain object collection. 
In .NET a Repository should look like:

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BLAttouPFjNUc8yR4tTmHDQYCEs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BLAttouPFjNUc8yR4tTmHDQYCEs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BLAttouPFjNUc8yR4tTmHDQYCEs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BLAttouPFjNUc8yR4tTmHDQYCEs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=OKypqW21NBE:vQp_pTRvd1Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry><entry gd:etag="W/&quot;DUcMRHg-eCp7ImA9WxNRFkQ.&quot;"><id>tag:blogger.com,1999:blog-3924739636407907202.post-3138157737828824685</id><published>2009-09-11T16:15:00.003-03:00</published><updated>2009-09-11T16:24:45.650-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-11T16:24:45.650-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="NHibernate" /><category scheme="http://www.blogger.com/atom/ns#" term="ORM" /><category scheme="http://www.blogger.com/atom/ns#" term="English" /><title>NHibernate: Tree Re-parenting</title><link rel="replies" type="application/atom+xml" href="http://fabiomaulo.blogspot.com/feeds/3138157737828824685/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://fabiomaulo.blogspot.com/2009/09/nhibernate-tree-re-parenting.html#comment-form" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/3138157737828824685?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/3924739636407907202/posts/default/3138157737828824685?v=2" /><link rel="alternate" type="text/html" href="http://fabiomaulo.blogspot.com/2009/09/nhibernate-tree-re-parenting.html" title="NHibernate: Tree Re-parenting" /><author><name>Fabio Maulo</name><uri>http://www.blogger.com/profile/13558454874302740335</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03401402695585075558" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">8</thr:total><content type="html">Did you heard about NHibernate and Hibernate re-parenting issue?  I heard it many times in these years including in our JIRA.  Depending on how you are managing your system there are various solutions to manage the re-parenting issue. The most common is set the cascade style to “all” and manage orphaned nodes in some way.  The last time the user said:     Nhibernate should handle cases where 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1MpWOnp5DCux6QYmcNB7SywCOj4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1MpWOnp5DCux6QYmcNB7SywCOj4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1MpWOnp5DCux6QYmcNB7SywCOj4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1MpWOnp5DCux6QYmcNB7SywCOj4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hunabku?a=jgpibiyXisY:b6MswOpCCLI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content></entry></feed>
