EF Linq:使用Array中的ID更新相关表List

时间:2015-11-10 10:11:00

标签: c# entity-framework linq optimization

我有一个带有int值的数组,表示ID

我有一个实体(使用EF生成),其中包含一个代表相关表(1到n)的集合属性

我需要使用数组中的值更新此集合

当然我可以预先解决那个问题,但我确信有更好的方法可以用Linq做到这一点吗?

由于

1 个答案:

答案 0 :(得分:0)

据我所知,EF中没有“一步”更新命令。首先,您必须选择您的项目,然后更改它的值,然后保存它。 2分贝往返(选择并保存)。

但是如果您的ID列是主键或唯一,那么对于每个项目,创建新的db对象,设置ID值并附加它(使用attach方法),更改值并保存它。 1分贝往返(只需保存)。我更喜欢这个以提高性能。

另一方面,有一个用于一步更新命令的开源库。但他们只支持SQL Server。我记不起图书馆的名字了。

附加示例:

using (DataEntities context = new DataEntities())
{
    foreach (int ID in IDList)
    {
        TableName item = new TableName();
        item.ID = ID;
        context.TableName.Attach(item);
        item.IsDeleted = true; //Change a filed's value
    }

    context.SaveChanges();
}