我知道要更新 EF 中的模型,我必须获取模型,然后更改它,然后 dbContext.SaveChanges() 但有时在我的 Asp.net mvc 项目中,我想更新表中的字段,但我不知道它的 id,必须使用 where 子句获取它。 但我不想连接两次数据库,因为在 ADO.net 中我可以写:
UPDATE MyTable SET Field3 = "NewValue" WHERE Active = 1
现在我想为 EF 编写一个像这样工作的 linq to sql。 有什么办法吗? 谢谢
你不能。 EF 是 ORM,这意味着,您需要使用单独的对象(一一更新它们)。
查看 EntityFramework.Extended 库:
//update all tasks with status of 1 to status of 2
context.Tasks
.Where(t => t.StatusId == 1)
.Update(t => new Task { StatusId = 2 });
对于 EF Core:EntityFramework-Plus
您可以使用EF中的原始查询功能。
var query = "UPDATE MyTable SET Field3 = 'NewValue' WHERE Active = 1";
using (var context = new YourContext())
{
context.Database.ExecuteSqlCommand(query);
}