私は次のアクションメソッドを持っています:-
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(Rack rack)
{
try
{
if (ModelState.IsValid)
{
repository.InsertOrUpdateRack(rack);
repository.Save();
return RedirectToAction("Index");
}
}
catch (DbUpdateConcurrencyException ex)
{
var entry = ex.Entries.Single();
var databaseValues = (Rack)entry.GetDatabaseValues().ToObject();
var clientValues = (Rack)entry.Entity;
if (databaseValues.RU != clientValues.RU)
ModelState.AddModelError("RU", "Current value: "
+ databaseValues.RU);
if (databaseValues.DataCenterID != clientValues.DataCenterID)
ModelState.AddModelError("DataCenterID", "Current value: "
+ databaseValues.DataCenter.Name);
if (databaseValues.ZoneID != clientValues.ZoneID)
ModelState.AddModelError("ZoneID", "Current value: "
+ databaseValues.Zone.Name);
しかし、DbUpdateConcurrency 例外が発生すると、Null 参照例外が発生しdatabaseValues.DataCenter.Name & databaseValues.Zone.Name
ます。から 2 つのナビゲーション プロパティ (データ センターとラック) にアクセスできないようですGetdatabase().Toobject
。
この問題を解決する方法はありますか? 2 つのナビゲーション値がデータベース内に既に値を持っていることに注意してください。