簡體   English   中英

使用實體框架更新外鍵

[英]Update foreign key using Entity Framework

我再一次遇到了實體框架問題。

我正在嘗試使用外鍵更新表,

我在插入時遇到問題,但是通過編輯edmx文件進行了排序。

我正在使用以下代碼更新與角色表有外部關系的用戶表,

Domain.Data.Role role = db.Role.FirstOrDefault(r => r.RoleName == user.Role); 

Domain.Data.User data = db.User.Where(u => u.UserName == username).First();

data.Pass = user.Password.Encrypt();
data.CreatedBy = Login.User.Encrypt();
data.DtCreated = DateTime.Now;

//data.Role = role;

 data.Role = (from r in db.Role
              where r.RoleName == user.Role
              select r).First();

 db.SaveChanges();

更新時,我收到以下異常,

發生引用完整性約束沖突:當對象具有非臨時鍵時,不能更改作為引用完整性約束一部分的屬性。

任何反饋將非常有幫助。

問候,

薩伯

我不確定,但是在設計器中創建/更新模型時,您可能需要檢查是否勾選了“在模型中包括外鍵列”。 如果勾選了該復選框,則可能會發現僅設置該對象是不夠的,您可能還需要設置ID或僅設置ID。

例如。 您可能需要做:

data.RoleId = role.RoleId;

結合設置對象或代替設置對象。

就我個人而言,我不會勾選“在模型中包括外鍵列”,因為它使我頭疼不已,而我卻不記得一年或一年多以前的情況。 有時會很痛苦,因為能夠使用IDs進行過濾/搜索/更新是一件很不錯的事,但是我學會了沒有這種生活,以免遇到您遇到的煩惱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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