0

我有以下基地(抽象模型):表每層次(TPH)與實體框架繼承

public abstract class StatusMessage 
{ 
    public int Id { get; set; } 

    /// <summary> 
    /// Message 
    /// </summary> 
    /// [Required] 
    public string Description { get; set; } 

    public DateTime? CreationDate { get; set; } 

    public int UseraccountId { get; set; } 
    public virtual Useraccount Useraccount { get; set; } 
} 

而這一模式是由StatusMessage得出:

public class ProjectStatusMessage : StatusMessage 
{ 
    public int ProjectId { get; set; } 
    public virtual Project Project { get; set; } 
} 

在我的上下文我建了一個StatusMessage集:

public IDbSet<StatusMessage> StatusMessage { get; set; } 

在我初始化我嘗試建立一個新的項目狀態信息,並將其保存到d atabase:

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(); 

當代碼被執行編譯器將拋出異常。 'ProjectStatusMessage_Project'中的插入和外鍵約束存在衝突。衝突在表'dbo.Project'中,列'Id'。

回答

0

我自己發現了問題。 我的初始化程序中的順序錯誤。 我先創建了項目狀態,然後是項目...