LINQ to SQL更新未更新

时间:2011-04-28 19:25:51

标签: linq-to-sql changeset

简单的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;
    }
}

2 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。我有一张表拒绝显示更改或更新。

我通过删除dbml文件中的所有表然后重新添加它来修复它。

答案 1 :(得分:0)

两项:

  1. 您确定新值与旧值不同吗?

  2. 以下内容永远不会返回null,为什么要检查呢?如果有多于或少于一条记录,它将抛出。我想你想要SingleOrDefault()?

    dc.CompanyEmployees.Single(c =&gt; c.Id == Employee.Id)