以下に説明する継承があります:
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 マッピングは初めてで、かなり混乱しています !!!