Sql server 实体框架的每层次表(TPH)继承

Sql server 实体框架的每层次表(TPH)继承,sql-server,entity-framework,entity-framework-4,sql-server-2012,Sql Server,Entity Framework,Entity Framework 4,Sql Server 2012,我有以下基础(抽象模型): 在我的上下文中,我构建了一个StatusMessage集: public IDbSet<StatusMessage> StatusMessage { get; set; } 公共IDbSet状态消息{get;set;} 在我的初始值设定项中,我尝试构建一条新的项目状态消息,并将其保存到数据库中: var statusMessages = new List<StatusMessage> { new ProjectStatusMessa

我有以下基础(抽象模型):

在我的上下文中,我构建了一个StatusMessage集:

public IDbSet<StatusMessage> StatusMessage { get; set; }
公共IDbSet状态消息{get;set;} 在我的初始值设定项中,我尝试构建一条新的项目状态消息,并将其保存到数据库中:

var statusMessages = new List<StatusMessage>
{
    new ProjectStatusMessage
    {
        Description = "Test-Project-Status-Message",
        ProjectId = 1,
        UseraccountId = 1
    }                   
};
statusMessages.ForEach(s => context.StatusMessage.Add(s));
context.SaveChanges();
var statusMessages=新列表
{
新项目状态消息
{
Description=“测试项目状态消息”,
projectd=1,
UseraccountId=1
}                   
};
statusMessages.ForEach(s=>context.StatusMessage.Add);
SaveChanges();
当代码被执行时,编译器抛出一个异常。
“ProjectStatusMessage\u Project”中的插入和外键约束存在冲突。冲突出现在表“dbo.Project”的“Id”列中。

我自己发现了问题。 我的初始值设定项中的顺序是错误的。 我先创建了projectstatus,然后创建了项目

public IDbSet<StatusMessage> StatusMessage { get; set; }
var statusMessages = new List<StatusMessage>
{
    new ProjectStatusMessage
    {
        Description = "Test-Project-Status-Message",
        ProjectId = 1,
        UseraccountId = 1
    }                   
};
statusMessages.ForEach(s => context.StatusMessage.Add(s));
context.SaveChanges();