我正在尝试为实体框架创建一个查询,该查询将允许我获取ID列表并更新与它们关联的字段。
SQL中的示例:
UPDATE Friends
SET msgSentBy = '1234'
WHERE id IN (1, 2, 3, 4)
如何将以上内容转换为实体框架?
我正在尝试为实体框架创建一个查询,该查询将允许我获取ID列表并更新与它们关联的字段。
SQL中的示例:
UPDATE Friends
SET msgSentBy = '1234'
WHERE id IN (1, 2, 3, 4)
如何将以上内容转换为实体框架?
Answers:
像下面这样
var idList=new int[]{1, 2, 3, 4};
using (var db=new SomeDatabaseContext())
{
var friends= db.Friends.Where(f=>idList.Contains(f.ID)).ToList();
friends.ForEach(a=>a.msgSentBy='1234');
db.SaveChanges();
}
您可以如下更新多个字段
friends.ForEach(a =>
{
a.property1 = value1;
a.property2 = value2;
});
ForEach
是上的一种方法List
,通常不建议使用,因为它不是一种非常实用的编程方式。像普通人一样使用foreach
(操作员)即可。
UPDATE SomeTable SET SomeField = SomeValue WHERE Id IN (...)
)
var idList=new int[]{1, 2, 3, 4};
var friendsToUpdate = await Context.Friends.Where(f =>
idList.Contains(f.Id).ToListAsync();
foreach(var item in previousEReceipts)
{
item.msgSentBy = "1234";
}
您可以使用foreach更新满足您条件的每个元素。
这是更通用的示例:
var itemsToUpdate = await Context.friends.Where(f => f.Id == <someCondition>).ToListAsync();
foreach(var item in itemsToUpdate)
{
item.property = updatedValue;
}
Context.SaveChanges()
通常,您最有可能在adb查询中使用await方法。