我有一个带有int值的数组,表示ID
我有一个实体(使用EF生成),其中包含一个代表相关表(1到n)的集合属性
我需要使用数组中的值更新此集合
当然我可以预先解决那个问题,但我确信有更好的方法可以用Linq做到这一点吗?
由于
答案 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();
}