使用非EF DTO类型进行选择时,如何进行保存更改?

时间:2012-06-21 17:29:06

标签: entity-framework entity-framework-4 entity-framework-4.1 devexpress

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

有什么方法可以告诉EF使用PK Id在保存的更改期间将新值应用于缓存对象?如果我使用网格的整个Employee对象,则调用SaveChanges

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();
}

1 个答案:

答案 0 :(得分:0)

匿名类型在C#中是不可变的。在VB中,您可以使用“Key”关键字使它们变得可变,尽管我不确定EF是否尊重更新。如果希望模型可编辑,请将概念模型更改为仅包含所需的字段,并确保未使用的表列都可以为空。