您好我正在尝试将数据库迁移到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))
...
}
我的问题是:有没有办法创建一个映射,其中外键也是FluentNHibernate中使用C#的主键,或者我是否必须为每个表创建单独的主键?
答案 0 :(得分: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");
}
}