[英]Updating a relationship in Entity Framework generates SQL error
我在這里頭疼。 我在Session和User對象之間建立了一對零或一對一的關系,該關系是在Entity Framework 4中使用模型優先方法設計的。
因此,在運行時,我使用
Session session = context.Sessions.FirstOrDefault(s => s.Token.Equals(token));
然后我創建一個用戶,根據這樣的用戶輸入創建
user = context.Users.Create();
user.GUID = Guid.NewGuid();
user.Username = username;
user.Firstname = firstname;
user.Lastname = lastname;
user.Session = session;
context.Users.Add(user);
context.SaveChanges();
當我保存時,SQL Server引發異常,告訴我我嘗試插入數據庫中的GUID已經存在,因為是的,確實如此。 問題是,它不應該插入,它應該更新會話並填充它所屬的forein鍵。 外鍵位於關系的用戶端,這樣可以嗎?
編輯用戶應為新用戶。 更新用戶不是我要完成的工作。 同樣,該錯誤是因為代碼試圖插入具有相同主鍵值的會話,而不僅僅是更新它的前鍵。
這是應該執行的時間順序列表:
我得到的是:
違反PRIMARY KEY約束“ PK_Sessions”。 無法在對象“ dbo.Sessions”中插入重復密鑰。 重復的鍵值為VALUE 。 該語句已終止。
請幫幫我,過去2個小時我一直在擺弄。
編輯:更改了我的答案以反映更改后的問題描述:)
確保在處理此類更新時始終使用相同的上下文實例。
這里似乎正在發生的事情是,在一個上下文中檢索了會話,但是將用戶保存在該上下文的另一個實例中。 因此,在新的背景下,該會議被視為是新會議,因此被(錯誤地)插入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.