0

次のコードを使用して、DevExpress XtraGrid に DB ファースト モデルのデータを入力しています。呼び出しSaveChangesても効果はありません。これは、グリッド用に選択したオブジェクトと一致するキャッシュ オブジェクトがないためだと思います。

Id保存された変更中にキャッシュされたオブジェクトに新しい値を適用するために、EF に PK を使用するように指示する方法はありますか? SaveChangesグリッドに Employee オブジェクト全体を使用すると、呼び出しが機能します。

private void EmployeeFormLoad(object sender, EventArgs e)
{
    empsGridView.OptionsBehavior.Editable = true;
    var emps = context.Employees.Select(emp => new EmployeeDescriptor
    {
        Id = emp.Id,
        FirstName = emp.FullNames,
        LastName = emp.Surname
    });

    employeeDescriptorBindingSource.DataSource = emps.ToList();
}

private void button1_Click(object sender, EventArgs e)
{
    employeeDescriptorBindingSource.EndEdit();
    context.SaveChanges();
}
4

1 に答える 1

0

匿名型は C# では不変です。VB では、"Key" キーワードを使用してそれらを可変にすることができますが、EF が更新のためにそれを尊重するかどうかはわかりません。モデルを編集可能にする場合は、必要なフィールドのみを含めるように概念モデルを変更し、未使用のテーブル列がすべて null 可能であることを確認します。

于 2012-06-21T17:42:59.973 に答える