Greg, IInterceptor.Instansiate ? On Tue, Oct 7, 2008 at 10:06 PM, Greg Young <[EMAIL PROTECTED]> wrote:
> > PI has always been defined as the domain not having any changes in > specific for it persistence mechanism. > > I believe we can give credit to Jimmy Nilsson for creating in the term > in ADDDP (Applying Domain Driven Design and Patterns). > > > > You could use nhibernate in a more classic repository implementation > (DAO layer) and not run into these issue with your proxies. > > > There are many other issues with nhibernate and PI ... my personal > largest one is the lack of support for constructor mapping which can > really screw with validation stories but again I can work around this > in the same way I can with EF, I can use DAOs and put a repository > over the top of them. > > Cheers, > > Greg > > On Tue, Oct 7, 2008 at 12:55 PM, MAMMON <[EMAIL PROTECTED]> wrote: > > > > Lately I've been thinking about Persistence Ignorance. In the past, I > > don't know if I ever procured a formal definition of the term. It > > always seemed to make sense in the context it was used. My contextual > > definition has historically been something like "The UI layer > > shouldn't have to know or care what OR/M or other technology I'm using > > to store and retrieve data", a la Separation of Concerns. I shouldn't > > have any "using" directives for NHibernate namespaces in ANY of my UI > > code. > > > > With a lot of Entity Framework buzz being generated recently, due to > > it's v1 release with VS2008 SP1, the term Persistence Ignorance has > > been climbing the Google ranks ladder. Indeed, a Google search of the > > term shows that of the top 5 results, 3 are about the Entity > > Framework. Since I work in an otherwise all Microsoft shop, I am very > > interested in the EF, and the recent buzz has caused me to think more > > about Persistence Ignorance. Out of the box, EF doesn't have it, but > > someone at MS has created a PI POCO adapter for EF v1. > > > > > http://blogs.msdn.com/jkowalski/archive/2008/09/09/persistence-ignorance-poco-adapter-for-entity-framework-v1.aspx > > > > That article made me think of PI in a new way: not only should the UI > > layer, or any other consuming layer, not have to know or care what OR/ > > M or other technology I'm using, but my classes should be able to be > > POCOs, and I shouldn't have to make them jump through hoops in order > > to be functional and "persistable". EF v1 (without the mentioned POCO > > adapter) requires that classes are derived from EntityObject. > > NHibernate is nice because there is no such requirement. However, I'm > > not sure NHibernate is really Persistent Ignorant. It might not force > > me to use dependent base classes, causing tight coupling, but it DOES: > > + Force me to make all of my methods and properties virtual, for the > > use of proxies > > + Force me to override Equals() and GetHashCode(), because of proxies > > + Prevent me from putting logic in public property getters/setters, > > because the proxies, upon hydrating objects, would incorrectly execute > > that logic. > > + Create the "polymorphic databinding" problem with lists and > > collections of objects, because of proxies. > > > > What specifically got me on this train of thought was this problem: > > > > public class Person > > { > > private string _fname; > > private DateTime _dateLastModified; > > > > public virtual string FName > > { > > get { return _fname; } > > set > > { > > _dateLastModified = DateTime.Now; // Problem here > > _fname = value; > > } > > } > > } > > > > With business rules inlined in the logic in the FName setter, won't > > lazy loaded instances of Person call the setter to lazily hydrate the > > instance? And wouldn't that cause the _dateLastModified value to > > change, even though no real modification has been made? > > > > So does NH really achieve Persistence Ignorance? > > > > (PS, I'm not trying to be negative here, so let's not get the flame > > throwers out just yet) > > > > > > > > > -- > It is the mark of an educated mind to be able to entertain a thought > without accepting it. > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to nhusers@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/nhusers?hl=en -~----------~----~----~----~------~----~------~--~---