モデルを更新すると、更新しようとしている子リレーションでエラーが発生します。
私のモデルは、Order が OrderItem と関係があるとします。私の見解では、オーダーアイテムのエディターテンプレートとともにオーダーの詳細があります。データを更新すると、Order へのリンクは null ですが、orderid が入力されているため、リンクできるはずです。TryUpdateModel は true を返しますが、保存は次のように失敗します。
InvalidOperationException: 操作に失敗しました: 1 つ以上の外部キー プロパティが null 非許容であるため、リレーションシップを変更できませんでした。リレーションシップに変更が加えられると、関連する外部キー プロパティが null 値に設定されます。外部キーが null 値をサポートしていない場合は、新しい関係を定義するか、外部キー プロパティに別の非 null 値を割り当てるか、関連のないオブジェクトを削除する必要があります。]
私の更新方法:
public ActionResult ChangeOrder(Order model)
{
var order = this.orderRepository.GetOrder(model.OrderId);
if (ModelState.IsValid)
{
var success = this.TryUpdateModel(order);
}
this.orderRepository.Save();
return this.View(order);
}
SO やその他のソースで見たすべてのソリューションを試しましたが、どれも成功しませんでした。
.Net MVC 3、EF 4.3.1 を DBContext と共に使用します。