2
我有一個加載在一個受保護的字典成員的EF6實體基本控制器。但不知何故,它停止其他控制器從更新該實體。下面是簡化的代碼 -MVC5 - 實體加載基地控制器實體更新衝突別處
public abstract class BaseController : Controller {
protected IDictionary<string, int> MyList;
public BaseController() {
MyList = new Dictionary<string, int>();
foreach (var rc in db.MyTable.Where(r => r.IsActive).ToList())
MyList.Add(rc.Name, rc.Id);
ViewBag.MyListViewBag = MyList;
}
}
public class MyController : BaseController {
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "Id,Name,...other properties")] MyTable mt) {
if (ModelState.IsValid)
{
db.Entry(mt).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(mt);
}
}
的錯誤是「連接類型的實體失敗,因爲同類型的另一實體已經有相同的主鍵值」,它是在db.Entry(mt).State = EntityState.Modified;
當你拋出可以看到,BaseController首先加載列表中的實體,應該嚴厲任何連接(至少我認爲它會)。有沒有辦法解決它?
謝謝你,這固定它。不過奇怪的是,直到實體在基本控制器訪問現有的代碼是工作得很好。 – Achilles