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 -~----------~----~----~----~------~----~------~--~---