0

您好我正在尝试将数据库迁移到 ORM,但发现了一个问题。数据库是用继承的概念创建的,其中有一个父表和几个继承其属性的子表。为了方便使用 INNER JOIN 进行查询,所有子表只包含对父表标识的引用(同时是主键的外键)。遵循模型:

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 回答