3

私は NHibernate の規約ベースのマッピングを使用しており、マルチレベルの継承構造をマッピングする方法を見つけようとしています。

次のクラス構造がある場合

class ClassA

class ClassB : ClassA

class ClassC : ClassB

そして、3つのクラスすべてが単一のテーブルを表すようにしたい-データベースの「ClassC」

私の構成では、ClassA を RootEntity として定義しました

(ここで説明: http://fabiomaulo.blogspot.co.nz/2011/04/nhibernate-32-mapping-by-code_13.html )

public static void WithConventions(this ConventionModelMapper mapper, Configuration configuration)
{
    var baseEntityType = typeof(ClassA);
    mapper.IsRootEntity((type, declared) => baseEntityType.Equals(type.BaseType));

    ...
}

結果のスキーマは、ClassA で定義されたフィールドを含む ClassB と ClassC の別々のテーブルを作成します。

4

1 に答える 1

0

ModelInspector では、メソッド IModelInspector.IsTablePerClassHierarchy に対して true を返す必要があります。これにより、すべてのクラスが同じテーブルに格納されます。

于 2014-11-05T10:01:52.750 に答える