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