2012-09-18 88 views
0

我使用NHibernate和ConfORM来映射我的域实体。与扩展类映射

假设下面的类:

public class Event { 
    public virtual Guid Id { get; set; } 
    public virtual string Title { get; set; } 
    public virtual bool Active { get; set; } 
} 

public class EventA : Event { 
    public virtual string PropertyA { get; set; } 
} 

public class EventB : Event { 
    public virtual string PropertyB { get; set; } 
} 

Diagram

我需要在派生类不重复 NHibernate的表中的字段,但使用基类,如图所示。

我符合设置:

var domainAssembly = typeof(Event).Assembly; 
var domainEntities = from t in domainAssembly.GetTypes() where t==typeof(Event) select t; 
var orm = new ObjectRelationalMapper(); 
orm.Patterns.Sets.Add(new UseSetWhenGenericCollectionPattern()); 
orm.Patterns.PoidStrategies.Add(new ConfOrm.Patterns.IdentityPoidPattern()); 
orm.TablePerConcreteClass(domainEntities); 
var patternsAppliers = new CoolPatternsAppliersHolder(orm); 
var mapper = new Mapper(orm, patternsAppliers); 
[...] 

对如何处理这个问题可以在任何想法?

回答

0

交换orm.TablePerConcreteClass(domainEntities);orm.TablePerClass(domainEntities);这将创造

Event 
----- 
PK | Id 

EventA 
----- 
PK,FK | EventId 

因为EventA一个单独的编号列不是所必要的