使用NHibernate在没有鉴别器的情况下为每个类层次结构持久化一个表?
我有一个接口和一个实现这个接口的类使用NHibernate在没有鉴别器的情况下为每个类层次结构持久化一个表?,nhibernate,interface,nhibernate-mapping,table-per-hierarchy,discriminator,Nhibernate,Interface,Nhibernate Mapping,Table Per Hierarchy,Discriminator,我有一个接口和一个实现这个接口的类 public interface IPhase { string Description { get; set; } int Id { get; } string Phase { get; set; } } public class Phase : IPhase { // Implementation here... } 现在,使用NHibernate2.1.2.GA,我希望使用每个类层次结构的表来映射接口及其实现者,实际上
public interface IPhase {
string Description { get; set; }
int Id { get; }
string Phase { get; set; }
}
public class Phase : IPhase {
// Implementation here...
}
现在,使用NHibernate2.1.2.GA,我希望使用每个类层次结构的表来映射接口及其实现者,实际上,我不需要鉴别器,因为这个实现者将是这个表中唯一的类。我已经有一年半没有用过NHibernate了,现在我的记忆有些空白
我已经阅读了这个相关的问题和答案,除了我没有使用FNH。discriminator
属性在使用子类时是否是必需的
谢谢你的帮助 当然,NHibernate需要一个用于表/类层次结构映射的鉴别器,否则在从数据库获取行时,它应该如何识别不同的子类 如果接口只有一个实现,为什么要映射它?只需将类映射为普通实体(无继承)
编辑:忘记映射中可能有对接口的引用。在这种情况下,您可以尝试使用
abstract=“true”
标记基类(接口)的表/具体类映射,如这里所述:当然,NHibernate需要一个用于表/类层次结构映射的鉴别器,否则从数据库获取行时,它应该如何识别不同的子类
如果接口只有一个实现,为什么要映射它?只需将类映射为普通实体(无继承)
编辑:忘记映射中可能有对接口的引用。在这种情况下,您可以尝试使用
abstract=“true”
标记基类(接口)的每个具体类的表映射,如这里所述:+1我认为如果使用每个具体类的表
策略,这将大大简化数据持久性。感谢您抽出时间回答我的问题。=)+1我认为如果使用每个具体类的表
策略,这将大大简化数据持久性。感谢您抽出时间回答我的问题。=)