0

単純な 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;
    }
}
4

2 に答える 2

3

私はちょうど同じ問題に遭遇しました。変更または更新の表示を拒否するテーブルが 1 つあります。

dbml ファイル内のすべてのテーブルを削除してから、再度追加することで修正しました。

于 2012-12-05T18:48:47.570 に答える
0

2つのアイテム:

  1. 新しい値が古い値と異なっていてもよろしいですか?

  2. 以下はnullを返すことはないので、なぜそれをチェックするのですか?レコードが1つより多いか少ない場合にスローされます。SingleOrDefault()が欲しいと思いますか?

    dc.CompanyEmployees.Single(c => c.Id == Employee.Id)

于 2011-04-29T15:11:54.917 に答える