One more interesting thing... How the queriyng works... Lets say that a customer has an Orders many side, and a Product one side... and we have keys:
- Customer - "customer.id" - "1" - Orders - "customer.orders" - "1,2,3" - Product "customer.product" - "1" It will create 3 queries - 2 with Equal criteria, and 1 with In criteria, batch them together via MultiCriteria and execute them in 1 call to the database. This makes this hopefully in the long run a scalable thing. Vladan On Oct 6, 9:18 am, Vladan Strigo <[EMAIL PROTECTED]> wrote: > For a small frameworkish thing I wanted to make something similar to > the great functionality provided by Castle's ARDataBind attribute. > > One big difference is that this is based on NHibernate model itself > and not ActiveRecord as it with Castle. For starters (not as > attribute, seperated logic) I made a NHibernateEntityFetcher. > > In a nutshell it allows you to provide a list (NameValueCollection) of > identifiers (if you have a Customer entity, which has Orders many side > and Product one side, you can provide keys for example "customer.id", > "orders", "product"), a persisted type (e.g. Customer) and a strategy > (FetchRootAndOptionallyChildren, FetchOnlyChildren, > NewInstanceIfInvalidKey, NullIfInvalidKey) by which to fetch objects. > And it depending on the strategy it will load or instantiate parent > entity, load the children by ids (if provided and strategy says it > should), connect them together (add to parent the children, add to > children the parent if needed) and return a prepared object for insert > or update. > > The syntax is something like: > > var fetcher = new NHibernateEntityFetcher(session); > > var customer = > fetcher.Do(FetchBehavior.FetchOnlyChildren).Fetch<Customer>(keyValues); > > or > > var customer = > fetcher.Do(FetchBehavior.FetchOnlyChildren).Fetch(typeof(Customer), > keyValues); > > and alternatevly you can provide a strategy to assemble key names (if > for example the values provided in the NameValueCollection are > composed differently then [entitytypename].[entitypropertyname]). > > This all works by using the NHibernate internal class mappings and > delegates as much reflection actions as possible to NHibernate itself > (instantiating, setting property values and such which I found I could > use). > > If someone would be interested in this I can write a blog post about > it and put the source and sample project online? > > Cheers! > Vladan --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to [email protected] 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 -~----------~----~----~----~------~----~------~--~---
