2012-05-03 7 views
2

UPDATEステートメントがFOREIGN KEY制約 "FK_tblStmtTask_StmtBatchID"と競合しました。競合はデータベース "CRM"、テーブル "dbo.tblStmtBatch"、列 'ID'で発生しました。EF SaveChangesエラー

文は、私が「M 『tblStmtTask』に変更を保存中に、このエラーを取得しては..私は、私が 『tblStmtBatch』への外部キーを持っていることを理解し、私は手掛かりを持っていない

を終了しましたなぜタスクに関係のない列を変更すると、バッチに影響を及ぼさなければならない。

を、私は、このエラーの根本的な原因は、実際に?

+0

エンティティを更新する行にブレークポイントを設定します。エンティティの外部キープロパティに実際に値があるかどうかを確認します。 – Mekswoll

+0

はい、それは問題です...それは14で始まりました...しかし今は0です....それはどこに行きましたか?クイック調査では、コントローラーの編集の前半に行をロードするとその行が存在することが示されます。 – reidLinden

+0

エンティティがフォームで更新され、ActionMethodがこの 'public ActionResult Edit(Entity entity)'のように見える場合、それは自動的に外部キーのプロパティを埋めることはありません。 '@ H​​tml.HiddenFor' HTMLヘルパーを使って送ることができます。明らかにこれは唯一のものです(しかし私はFK値を失う共通の方法を推測します)。最も簡単な方法は、失われた場所を追跡することです。そのため、エンティティの作成時にブレークポイントを設定してから、ステップごとにチェックしてください。 – Mekswoll

答えて

2

場所が更新ステートメントにブレークポイントが何であるかを解読するにはどうすればよいです。FKプロパティますそれが空になるように設定されているステップを見つけるには、tの作成ポイントをブレークポイントにすることです彼はエンティティとステップを実行するので、FKが空になる場所を特定できます。

作成時にFKプロパティが空の場合、マッピングに問題があります。エンティティがDefaultModelBinderで作成されている場合は、フォームにFKプロパティを指定していることを確認してください。 @Html.HiddenFor HTMLヘルパーを使用します。

+0

あなたの援助ありがとう、これは正確にチケットだった。 – reidLinden

関連する問題