简单的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文件中的所有表,然后重新添加它们来修复它。
两项:
-
您确定新值与旧值不同吗?
-
下面的代码永远不会返回null,所以为什么要检查它呢?如果有多于或少于一条记录,它将抛出。我想你想要SingleOrDefault()?
dc.CompanyEmployees。单(c => c. id == Employee.Id)