2つのエンティティ間の関係に問題があります。INSERTステートメントがFOREIGN KEY制約と競合しました - Entity Framework
私のクラスは以下の通りです。私はその上に複数のオーバーヘッドを持つCISオブジェクトを保存しようとすると
public class Cis
{
[Key]
public int CisId { get; set; }
public int ProjectId { get; set; }
[ForeignKey("ProjectId")]
public virtual ICollection<Overhead> Overheads { get; set; }
}
public class Overhead
{
public int Id { get; set; }
public int ProjectId { get; set; }
public SecuredWorkType SecuredWorkType { get; set; }
public decimal? OverheadRecoveryTotalValue { get; set; }
public decimal? BudgetedFinancialResultValue { get; set; }
public decimal? SecuredValue { get; set; }
public decimal? OverheadRecoveryTotalPercentage { get; set; }
}
、私は私があるため、設計上の問題の私の外部キーとしてシスにCisIdを使用することはできません
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_dbo.Overhead_dbo.Cis_ProjectId". The conflict occurred in database "CisLatest", table "dbo.Cis", column 'CisId'.The statement has been terminated."
次のエラーを取得します - 私がCisIdを外部キーとして使用していたとき、それは正常に機能しました。
私は子供の中に親エンティティを置くことを示していますが、ここでも同様の質問と回答を見ましたか?これがこの場合に該当するかどうかわからない
ありがとうございます。
1. 'ProjectId'を試してみてください。 2.本当の関係は何ですか? '[ExternalKey(" ProjectId ")]'を作って 'オーバーヘッド 'に' [Key] 'を設定する必要があります –
アプリケーションの構造は次のとおりです。 Cisの数が多く、オーバーヘッドが多いプロジェクト。 CISとオーバーヘッドの間に直接の関係は必要ありません。オーバーヘッドはプロジェクトごとでCISではなく、これは混乱しているかもしれません。 – Aeptitude
データ構造を再考する必要があるようです。彼の意見では、あなたは、「プロジェクト」、「シス」、「オーバーヘッド」、「プロジェクト__Cis」、「プロジェクト_オーバーヘッド」が必要だと思います。突然、あなたのEDMを構築できるように見えます –