Простое обновление LINQ не работает. Я делаю изменения, но GetChangeSet возвращает 0 обновлений.
public bool Update(CompanyEmployee Employee) { if (!isValid(Employee)) return false; var dc = new ERICustomersDataContext(); var e = dc.CompanyEmployees.Single(c => c.Id == Employee.Id); if (e == null) { _ErrorMessage = "Not found"; return false; } e.LastName = Employee.LastName; e.FirstName = Employee.FirstName; e.EmployeeNumber = Employee.EmployeeNumber; e.BusinessUnitId = Employee.BusinessUnitId; var ChangeSet = dc.GetChangeSet(); if (ChangeSet.Updates.Count == 0) { _ErrorMessage = "Changeset is empty"; // <<<< THIS IS WHAT HAPPENS... return false; } try { dc.SubmitChanges(); return true; } catch (Exception ex) { _ErrorMessage = ex.Message; return false; } }
Я просто столкнулся с той же проблемой. У меня была одна таблица, которая отказывалась показывать изменения или обновления.
Я исправил это, удалив все таблицы в моем dbml-файле, а затем снова добавил их.
Два предмета:
Вы уверены, что новые значения отличаются от старых значений?
Следующее никогда не вернет ноль, так зачем проверять это? Он выдаст, если будет больше или меньше одной записи. Я думаю, что вы хотите SingleOrDefault ()?
dc.CompanyEmployees.Single (c => c.Id == Employee.Id)