+1 to what Martin said
2009/6/16 Martin Hornagold <[email protected]>
>
> Sounds to me like you don't need subclasses of any kind.
> You just need to tell FNH that DictionaryBase is a base type.
> If you are using S#arpArch you then modifying the IsBaseTypeConvention
> method in the AutoPersistenceModelGenerator to the following should do the
> trick:
>
> private bool IsBaseTypeConvention(Type arg) {
> bool derivesFromEntity = arg == typeof(Entity);
> bool derivesFromEntityWithTypedId = arg.IsGenericType &&
> (arg.GetGenericTypeDefinition() ==
> typeof(EntityWithTypedId<>));
> bool derivesFromDictionaryBase = arg == typeof(DictionaryBase)
>
> return derivesFromEntity || derivesFromEntityWithTypedId ||
> derivesFromDictionaryBase;
> }
>
> -----Original Message-----
> From: [email protected] [mailto:
> [email protected]] On Behalf Of Lukasz Podolak
> Sent: 16 June 2009 16:18
> To: Fluent NHibernate
> Subject: [fluent-nhib] Re: Table-per-concrete class mapping?
>
>
> Thank you Hudson,
>
> but I still can't make it working. Could you please take a quick look
> at my example ?
> here are my classess (one abstract and one conrete). I have more
> concrete classess like Contractor, but didn't want to include for
> brevity.
>
> public abstract class DictionaryBase : Entity
> {
> protected DictionaryBase() { }
> public DictionaryBase(string name) { Name = name; }
>
> [DomainSignature]
> public virtual string Name { get; set; }
> public virtual string Description { get; set; }
> }
>
> public class Contractor : DictionaryBase
> {
> protected Contractor() {}
> public Contractor(string name) : base(name)
> }
>
> and the mappings:
>
> public class DictionaryBaseMap :
> IAutoMappingOverride<DictionaryBase>
> {
> public void Override(AutoMap<DictionaryBase> mapping)
> {
> mapping.JoinedSubClass<Contractor>("Id", c =>
> {
> c.Map(element => element.Name);
> c.Map(element => element.Description);
> c.WithTableName(Inflector.Pluralize(typeof
> (Contractor).Name));
> });
> }
> }
>
> This creates me a correct table of "Contractors" with and Id, Name and
> Description but also creates me "DictionaryBases" (which I get mapped
> because of defaults of SharpArch (to look at every object that
> dervices from Entity and apply to it set of conventions, such as table
> name that is pluralized, etc). How can I exclude here mapping for
> DictionaryBase ?
> I took a look at mapping.Not - maybe this way, but I can't find the
> way to succeed.
> thanks once again,
> Łukasz
>
> On 16 Cze, 15:01, Hudson Akridge <[email protected]> wrote:
> > In FNH, it would be a .JoinedSubClass("columnName",x=>
> > x.YourSubClassMappingHere);
> > Although as a point of contention, one of the reasons why the table per
> > class hierarchy is default, is because it's the easiest to use in the
> > database, and it's also the best performing option. Having done a fairly
> > complex system using both ways, the table per class hierarchy is far
> better
> > performing.
> >
> > 2009/6/16 Łukasz Podolak <[email protected]>
> >
> >
> >
> > > By default, the inheritance mapping is "table per class hierarchy". I
> > > have a "DictionaryBase" class and couple of derived classes from it.
> > > How can I tell fnh to map all my derived classes as single tables and
> > > not to map DictionaryBase at all ? Can be fluent or automapping,
> > > whichever gets job done. For now I can only accomplish such mapppings
> > > when my concrete dictionary classes .. do not inherit from base, but I
> > > wouldn't like it to live this way.
> >
> > > I'm using SharpArch's defaults if this is any prompt.
> > > thanks for any help
> >
> > > Łukasz
> >
> > --
> > - Hudsonhttp://www.bestguesstheory.comhttp://twitter.com/HudsonAkridge
>
>
> >
>
--
- Hudson
http://www.bestguesstheory.com
http://twitter.com/HudsonAkridge
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Fluent NHibernate" 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/fluent-nhibernate?hl=en
-~----------~----~----~----~------~----~------~--~---