Entity framework 4 实体框架代码优先-单个实体映射到多个表而不使用公共键

Entity framework 4 实体框架代码优先-单个实体映射到多个表而不使用公共键,entity-framework-4,code-first,Entity Framework 4,Code First,在将一个实体映射到现有数据库中的多个表时,我面临一个关于EF代码第一版本的问题 Table1: (primaryKey is IdDocument) ---------------------------- IdDocument | CreationDate ---------------------------- Table 2: (primaryKey is on IdDocument and StartDate) -------------------------------------

在将一个实体映射到现有数据库中的多个表时,我面临一个关于EF代码第一版本的问题

Table1: (primaryKey is IdDocument)
----------------------------
IdDocument | CreationDate
----------------------------

Table 2: (primaryKey is on IdDocument and StartDate)
------------------------------------------------------------
IdDocument | StartDate | Label | LastUpdate 
------------------------------------------------------------
在单个实体中,我试图更新数据库中的信息。下面是实体类

公共抽象类文档库
{
[第列(“idDocument”)]
公共int?IdDocument{get;set;}
[列(“创建日期”)]
公共日期时间创建日期{get;set;}
}
公共类文档:DocumentBase
{
[列(“起始日期”)]
公共日期时间起始日期{get;set;}
[列(“最新更新”)]
公共日期时间上次更新{get;set;}
[列(“标签”)]
公共字符串标签{get;set;}
}
以下是同一实体的DbModelBuilder

模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity()
.Map(m=>
{
m、 属性(文档=>新建
{
document.IdDocument,
文件创建日期
});
m、 ToTable(“元文档”);
}).Map(m=>
{
m、 属性(文档=>新建
{
document.IdDocument,
document.StartDate,
document.EndDate,
文件、标签、,
document.LastUpdate,
文件.货币
});
m、 可转载(“文件”);
}).HasKey(key=>new
{
key.id文档,key.StartDate
});
基于模型创建(modelBuilder);
}

未能更新表1。

如果继承在所有表中没有相同的主键,则无法映射继承。如果要将这些表映射到同一实体,则必须存在一对一关系。这意味着第二个表中的
DocumentId
必须是唯一的,因此在键中包含
StartDate
没有意义


此外,TPC继承也很重要。

我已尝试格式化您的代码,使其更具可读性。我希望它仍然是正确的。