2010-11-05 198 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