2010-11-05 95 views
1
Public Sub UpdateStaff(ByVal sr As StaffRecord) 
      Dim oldSr As StaffRecord 
      Dim q = From staff In db.StaffRecords Where staff.Employee_Number = sr.Employee_Number Select staff 

    oldSr = q.First 

    oldSr.Address_Line1 = sr.Address_Line1 
    oldSr.Address_Line2 = sr.Address_Line2 
    oldSr.Address_Line3 = sr.Address_Line3 
    oldSr.Town_Or_City = sr.Town_Or_City 
    oldSr.Contact1Name = sr.Contact1Name 

    db.SubmitChanges() 

End Sub 

我寫的助手函數似乎做了除了更新數據庫以外的所有工作。單步執行代碼,oldSr由新的sr參數更新,但沒有更新提交更改。LINQ更新方法不更新Db

回答

1

給這個鏡頭,我想你的上下文正在丟失,當你設置q到oldSr。

Public Sub UpdateStaff(ByVal sr As StaffRecord) 
      Dim q = (From staff In db.StaffRecords Where staff.Employee_Number = sr.Employee_Number Select staff).Single(); 

q.Address_Line1 = sr.Address_Line1 
q.Address_Line2 = sr.Address_Line2 
q.Address_Line3 = sr.Address_Line3 
q.Town_Or_City = sr.Town_Or_City 
q.Contact1Name = sr.Contact1Name 

db.SubmitChanges() 

End Sub 
+0

作品。十分感謝! – JohnnyBizzle 2010-11-08 09:43:55

0

如果馬修的修復沒有工作...我知道你有什麼沒有實體框架1,但在EF1有一個方法,ApplyPropertyChanges,你可以打電話讓他知道,一個實體已經更新:

db.ApplyPropertyChanges("EntityTypeName",oldSr); 
db.SaveChanges(); 

我不知道你使用的是什麼,但我猜,有,你可以使用強制上下文識別這種變化類似的方法。

[編輯:添加評論] - 我希望這不是一個錯誤的形式來發布一些不是真正的答案,而只是「尋找這種方法」的答案。如果是這樣,我表示歉意。

Kevin