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

Reply via email to