我有下面描述的继承:
public abstract class BaseEntity<TId> {....}
public abstract class ModelEntity : BaseEntity<Int32>{....}
public abstract class AuditableEntity : ModelEntity,IAuditable{....}
public class ApplicationUser : AuditableEntity{....}
public class SuperUser : ApplicationUser
我正在使用 NHibernate 3.3,我想为该继承创建映射
public abstract class ModelEntityMap<TEntity> : ClassMapping<TEntity>
where TEntity : ModelEntity
{...}
public class AuditableEntityMap<TEntity> : ModelEntityMap<TEntity> where TEntity : AuditableEntity
{ ...}
public class ApplicationUserMap : AuditableEntityMap<ApplicationUser>
{...}
public class SuperUserMap : JoinedSubclassMapping<SuperUser>{...}
当应用程序启动并尝试设置数据库时,它会引发以下异常:SuperUser 的模糊映射找到多个根实体 BaseEntity / ApplicationUser
可能的解决方案 - 合并根实体的映射代表层次结构中的真实根 - 注入带有逻辑的 IModelInspector 以发现真正的根实体。
我使用具有相同继承的 Fluent nhibernate,并且使用定义为公共类 SuperUserMap 的 SuperUserMap 工作正常:SubClassMap {...}
我是 Nhibernate 代码映射的新手,很困惑!