简单的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;
}
}
答案 0 :(得分:3)
我遇到了同样的问题。我有一张表拒绝显示更改或更新。
我通过删除dbml文件中的所有表然后重新添加它来修复它。
答案 1 :(得分:0)
两项:
您确定新值与旧值不同吗?
以下内容永远不会返回null,为什么要检查呢?如果有多于或少于一条记录,它将抛出。我想你想要SingleOrDefault()?
dc.CompanyEmployees.Single(c =&gt; c.Id == Employee.Id)