簡體   English   中英

無法編輯外鍵屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM