0

こんにちは、データベースを ORM に移行しようとしていますが、問題が見つかりました。データベースは継承の概念で作成されました。ここには、親テーブルと、それらのプロパティを継承するいくつかの子テーブルがあります。INNER JOIN を使用したクエリを容易にするために、すべての子テーブルには親テーブルの ID への参照のみが含まれていました (同時に存在した外部キ​​ーは主キーです)。次のモデルに従います。

BaseDocument
{
    Id : Long
    ...
}

AdministrativeDocument
{
    Id : Long (PK), (FK : BaseDocument(Id))
    ...
}

PropositionDocument
{
    Id : Long (PK), (FK : BaseDocument(Id))
    ...
}

ProjectDocument
{
    Id : Long (PK), (FK : BaseDocument(Id))
    ...
}

私の質問は、C# を使用して FluentNHibernate で外部キーが主キーでもあるマッピングを作成する方法はありますか、それともテーブルごとに個別の主キーを作成する必要がありますか?

4

1 に答える 1

1

クラス継承階層ごとに標準のテーブルがあります。そのようにマッピングするだけです

// inherit
class AdministrativeDocument : Document { }

// base class mapping
class DocumentMap : ClassMap<Document>
{
    public DocumentMap()
    {
        Id(x => x.Id, "Id")...;
    }
}

// subclass mapping, same for all three subtables
class AdministrativeDocumentMap : SubclassMap<AdministrativeDocument>
{
    public AdministrativeDocumentMap()
    {
        KeyColumn("Id");
    }
}
于 2012-10-23T05:47:45.640 に答える