[英]Unable to edit Foreign Key Property
解決方案:在同一頁面上使用的其他實體與會議有fk關系,因此,更改預訂表中的meetingid
導致參照完整性錯誤。
我有一個帶有獨立預訂實體的家長會議實體。 預訂實體具有字段meetingid
,這是會議表的外鍵。
我認為
@Html.HiddenFor(model => model.bookings.meetingid)
我能夠保存預訂實體,並按預期更新其所有屬性。
現在,我想允許用戶更改meetingid
,所以我添加了
@Html.EditorFor(m => m.bookings.meetingid)
當我單擊“保存”時,頁面將正常發布,但meetingid
保持不變。
我嘗試刪除隱藏的meetingid
字段,因為它現在與文本字段具有相同的名稱,但這會導致參照完整性錯誤。
這是郵政編碼...
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(vwbooking vwbooking)
{
if (ModelState.IsValid)
{
db.bookings.Attach(vwbooking.bookings);
vwbooking.bookings.update_date = DateTime.Now;
vwbooking.bookings.updated_by = User.Identity.Name;
db.Entry(vwbooking.bookings).State = EntityState.Modified;
db.SaveChanges();
}
...
如果在“ Attach
行上遇到異常,則可能意味着您已經綁定了vwbooking.bookings.meeting
某些屬性以形成視圖的字段,這導致vwbooking.bookings.meeting
在控制器操作和vwbooking.bookings.meeting.id
實例化vwbooking.bookings.meeting.id
是不一樣的vwbooking.bookings.meetingid
。 然后,您可以嘗試通過將“編輯”操作更改為以下方法來解決該問題:
var bookingsInDb = db.bookings.Find(vwbooking.bookings.id);
db.Entry(bookingsInDb).CurrentValues.SetValues(vwbooking.bookings);
bookingsInDb.update_date = DateTime.Now;
bookingsInDb.updated_by = User.Identity.Name;
db.SaveChanges();
如果在SaveChanges
上遇到異常,則簡單的原因可能是數據庫中不存在具有輸入的meetingid
。
無論如何,您都需要刪除HiddenFor
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.