0

私は次のベース(抽象モデル)を持っています:

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; }

私のイニシャライザでは、新しいプロジェクト ステータス メッセージを作成してデータベースに保存しようとしています。

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' にあります。

4

1 に答える 1

0

私は自分で問題を見つけました。初期化子の順序が間違っていました。最初に projectstatus を作成し、次にプロジェクトを作成しました...

于 2013-04-12T09:36:02.017 に答える