That's quite an interesting usage pattern I hadn't thought of Bart. Very nice.
On Fri, Jan 9, 2009 at 2:06 PM, <bti.timmerm...@gmail.com> wrote: > > Troy, > > I think it's very usefull to combine the automapping with custom > mapping to get the best of both worlds. The approach that I'm testing > out is defining your custom mapping as a specialization of an > automap: > > eg. > My entity customer: > public class Customer > { > public Guid Id {get;set;} > public string PartyNumber { get; set; } > public string FirstName { get; set; } > public string LastName { get; set; } > } > > My customized Customer AutoMap (which I put in my repository > assembly): > public class CustomerMap : AutoMap<Customer> > { > public CustomerMap() > { > Map(c => c.PartyNumber).TheColumnNameIs("party"); > } > } > (AutoMap<T> inherits from ClassMap<T>) > > Load the 'customized AutoMap<T>'s first using > model.MergeWithAutoMapsFromAssemblyOf<CustomerMap>(); //model is > AutoPersistenceModel > > Maybe this can be of interest to you. > > Bart. > > On 8 jan, 10:03, "Andrew Stewart" <andrew.stew...@i-nnovate.net> > wrote: > > Hi Troy > > Yeah, to get the benefit you really have to set a bunch of constraints > and > > try to stay inside them it's usually best on a greenfield to be honest. > > > > Andy > > > > > > > > > > > > On Thu, Jan 8, 2009 at 4:29 AM, Troy Goode <troygo...@gmail.com> wrote: > > > Thanks Andy, > > > > > Evidently I had a version of the source from before IsBaseType was > > > introduced. Once I refreshed and rebuilt the source I was able to get > > > everything working. In the end, though, I decided to go back to using > > > ClassMap<T> because I was having to create so many overrides for things > like > > > WithLengthOf(x) and CanNotBeNull() that it wasn't worth it for my > particular > > > project. It was a fun spike though! > > > > > Troy > > > > > On Tue, Jan 6, 2009 at 2:39 PM, Andrew Stewart < > > > andrew.stew...@i-nnovate.net> wrote: > > > > >> Hi Troy > > >> Here we go straight from the tests :o), always a good place to put > things > > >> you can't remember. > > > > >> var autoMapper = AutoPersistenceModel > > >> .MapEntitiesFromAssemblyOf<ExampleClass>() > > >> .Where(t => t.Namespace == > > >> "FluentNHibernate.AutoMap.TestFixtures.SuperTypes") > > >> .WithConvention(c => > > >> { > > >> c.IsBaseType = b => b == > > >> typeof(BaseEntity); > > >> }); > > > > >> That should do it for you. > > > > >> Andy > > > > >> On Tue, Jan 6, 2009 at 4:57 PM, Troy Goode <troygo...@gmail.com> > wrote: > > > > >>> Thanks Andrew, that makes sense, but unfortunately I'm still not > > >>> getting it to work. I added a convention for GetPrimaryKeyName, but > > >>> wasn't able to determine what convention to use to change the > > >>> baseobject to BaseEntity from object. When you have some time, any > > >>> help would be appreciated. > > > > >>> Troy > > > > >>> On Jan 6, 11:44 am, "Andrew Stewart" <andrew.stew...@i-nnovate.net> > > >>> wrote: > > >>> > Hi Troy > > >>> > I'm away from the code right now but the answers your are looking > for > > >>> are > > >>> > under the WithConventions method. > > > > >>> > From there you can set your baseobject to be BaseEntity rather than > > >>> object > > >>> > and set GetPrimaryKeyName to be Id. > > > > >>> > Hope that helps if not i'll look it up when I'm back at a machine. > > > > >>> > Andy > > > > >>> > On Tue, Jan 6, 2009 at 4:35 PM, Troy Goode <troygo...@gmail.com> > > >>> wrote: > > > > >>> > > Alright, I'm stumped. I have everything working fine with normal > FNH, > > >>> > > but once I tried to spike automapping I ran into an issue. In my > > >>> > > project I have a base class for all of my entities like so: > > > > >>> > > public abstract class BaseEntity > > >>> > > { > > >>> > > public virtual int? Id { get; set; } > > >>> > > public virtual DateTime? DateCreated { get; set; } > > >>> > > public virtual DateTime? DateLastModified { get; set; } > > >>> > > public virtual DateTime? DateDeleted { get; set; } > > >>> > > } > > > > >>> > > So an example of one of my entities would be: > > > > >>> > > public class Foo : BaseEntity > > >>> > > { > > >>> > > public virtual string Name { get; set; } > > >>> > > } > > > > >>> > > Finally, my autopersit setup looks like so: > > > > >>> > > var persistanceModel = AutoPersistenceModel > > >>> > > .MapEntitiesFromAssemblyOf<Foo>() > > >>> > > .Where( t=> t.Namespace == "MyNamespace" && t.Name != > > >>> > > "BaseEntity" ) > > >>> > > .ForTypesThatDeriveFrom<BaseEntity>( t=> > > >>> > > { > > >>> > > t.Id( e => e.Id, > "Id" > > >>> ); > > >>> > > t.Map( e=> > > >>> e.DateCreated ); > > >>> > > t.Map( e=> > > >>> > > e.DateLastModified ); > > >>> > > t.Map( e=> > > >>> e.DateDeleted ); > > >>> > > } ); > > > > >>> > > The problem I've encountered is that when NH goes to generate its > > >>> > > query, it comes up with something like so: > > > > >>> > > SELECT > > >>> > > this_.BaseEntityId as Id0_0_, > > >>> > > this_1_.DateLastModified as DateLast2_0_0_, > > >>> > > this_1_.DateDeleted as DateDele3_0_0_, > > >>> > > this_1_.DateCreated as DateCrea4_0_0_, > > >>> > > this_.Name as Name0_0_ > > >>> > > FROM > > >>> > > Foo this_ > > >>> > > inner join [BaseEntity] this_1_ > > >>> > > on this_.BaseEntityId=this_1_.Id > > > > >>> > > This will not work as my table structure is simply: > > > > >>> > > Foo > > >>> > > - Id > > >>> > > - Name > > >>> > > - DateCreated > > >>> > > - DateLastModified > > >>> > > - DateDeleted > > > > >>> > > Like I said, I have everything working with ClassMap, it is only > when > > >>> > > I try to use AutoPersistence that the issue arises... so two > > >>> > > questions: > > >>> > > 1) How do I configure things so that BaseEntity is not assumed to > be > > >>> > > another table? > > >>> > > 2) How do I configure things so that the Id property maps to the > "Id" > > >>> > > column, rather than (the non-existent) "BaseEntityId" column? > > > > >>> > > Thanks! > > > > >>> > -- > > >>> > ================= > > >>> > I-nnovate Software - Bespoke Software Development, uk wirral. > > >>>http://www.i-nnovate.net > > > > >> -- > > >> ================= > > >> I-nnovate Software - Bespoke Software Development, uk wirral. > > >>http://www.i-nnovate.net > > > > -- > > ================= > > I-nnovate Software - Bespoke Software Development, uk wirral. > http://www.i-nnovate.net- Tekst uit oorspronkelijk bericht niet weergeven > - > > > > - Tekst uit oorspronkelijk bericht weergeven - > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---