Thanks for the replies. I guess there are no sliver bullet to create a OR/M using NHibernate with a legacy database.
I am trying to sell NHibernate to my boss and co-worker, do you guys know if there are any quick way to generate at less the domain objects? On Feb 3, 6:01 pm, Chris Marisic <ch...@marisic.com> wrote: > Also you can take a look at the conventions I created with the new > Property/Type conventions. > > http://groups.google.com/group/fluent-nhibernate/browse_thread/thread... > > My 2 posts at the bottom of this discussion might give you some ideas. > > On Feb 3, 5:56 pm, James Gregory <jagregory....@gmail.com> wrote: > > > It depends really. Fluent NHibernate doesn't touch your database, so it > > won't be able to automatically change properties based on column names > > unless you've already mapped them. > > The best you could do is map your properties as you've done, then create a > > ITypeConvention to act on any properties that have a column name ending in > > YN. This blog > > post<http://blog.jagregory.com/2009/01/11/fluent-nhibernate-auto-mapping-t...> > > covers > > ITypeConventions. > > > There's no way to do this with just plain automapping though. > > > On Tue, Feb 3, 2009 at 10:41 PM, c24chan <herman...@gmail.com> wrote: > > > > Hi, > > > > I am quite new to fluent NH, so please bare with me if this is a > > > newbie question. > > > > I am dealing with a legacy db which consist of table with composite > > > primary key. For example, I have 2 domain object DOMAIN and DOMAIN_TL > > > and here is the mapping class I have. > > > > public class DomainMap : ClassMap<Domain> > > > { > > > public DomainMap() > > > { > > > WithTable("DOMAIN_VALUE"); > > > UseCompositeId().WithKeyProperty(x => x.DomainName, > > > "DOMAIN_NAME").WithKeyProperty(x => x.Value, "VALUE"); > > > Map(x => x.IsDefault).TheColumnNameIs > > > ("DEFAULT_YN").CustomTypeIs(typeof(NHibernate.Type.YesNoType)); > > > > HasMany<DomainTL>(x => x.DomainTLs) > > > .WithKeyColumn("DOMAIN_NAME") > > > .WithKeyColumn("VALUE") > > > .Inverse() > > > .LazyLoad(); > > > } > > > } > > > > and > > > > public class DomainTLMap : ClassMap<DomainTL> > > > { > > > public DomainTLMap() > > > { > > > WithTable("DOMAIN_VALUE_TL"); > > > UseCompositeId().WithKeyProperty(x => x.DomainName, > > > "DOMAIN_NAME") > > > .WithKeyProperty(x => x.Value, "VALUE") > > > .WithKeyProperty(x => x.Lang, "LANG"); > > > > Map(x => x.CreateDate).TheColumnNameIs("CREATE_DATE"); > > > Map(x => x.CreateUser).TheColumnNameIs("CREATE_USER"); > > > Map(x => x.DisplayOrder).TheColumnNameIs("DISPLAY_ORDER"); > > > Map(x => x.DomainDisplayName).TheColumnNameIs > > > ("DISPLAY_VALUE_TL"); > > > Map(x => x.ModifyDate).TheColumnNameIs("MODIFY_DATE"); > > > Map(x => x.ModifyUser).TheColumnNameIs("MODIFY_USER"); > > > Map(x => x.SearchString).TheColumnNameIs("SEARCH_STRING"); > > > > References(x => x.Domain).WithColumns("DOMAIN_NAME", > > > "VALUE").LazyLoad(); > > > } > > > } > > > > This works fine, but I was wondering if I can let Fluent NH do the > > > mapping for me instead. Also, I have a lot of varchar(1) field which > > > is always have names end with "_YN" which should be map to a bool > > > type. Can this be done with Automapping also? > > > > Thanks! --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Fluent NHibernate" group. To post to this group, send email to fluent-nhibernate@googlegroups.com To unsubscribe from this group, send email to fluent-nhibernate+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/fluent-nhibernate?hl=en -~----------~----~----~----~------~----~------~--~---