Метод обновления LINQ не обновляет БД - PullRequest
1 голос
/ 05 ноября 2010
   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, но не обновляется при отправке изменений.

Ответы [ 2 ]

1 голос
/ 05 ноября 2010

Сделайте это, я думаю, что ваш контекст теряется, когда вы устанавливаете 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 голосов
/ 05 ноября 2010

Если исправление Мэтью не работает ... Я знаю, что у вас нет Entity Framework 1, но в EF1 был метод ApplyPropertyChanges, который вы могли бы вызвать, чтобы сообщить, что Entity обновлен:

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

Я не уверен в том, что вы используете, но я предполагаю, что есть аналогичный метод, который вы могли бы использовать, чтобы заставить контекст распознавать изменения.

[РЕДАКТИРОВАТЬ: добавить комментарий] - Я надеюсь, это не плохая форма, чтобы публиковать что-то, что на самом деле не является ответом, а просто ответом «ищите такой метод».Если это так, я прошу прощения.

Кевин

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...