0

我正在使用以下代码使用来自 DB 优先模型的数据填充 DevExpress XtraGrid。调用SaveChanges没有效果,我认为这是因为没有与我为网格选择的对象匹配的缓存对象。

有什么方法可以告诉 EFId在保存更改期间使用 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 是否支持更新。如果您希望您的模型可编辑,请将概念模型更改为仅包含您需要的字段,并确保未使用的表列都可以为空。

于 2012-06-21T17:42:59.973 回答