如何使用C#中的实体框架中的where子句编写SQL更新查询

时间:2017-06-06 03:07:13

标签: c# sql-server entity-framework linq

我知道为了更新,EF i中的模型必须得到模型然后更改它然后dbContext.SaveChanges() 但有时在我的Asp.net mvc项目中,我想在我的表中更新一个字段,我不知道它是id,必须用where子句来获取它。 但我不希望连接两次到数据库,因为在ADO.net我可以写:

UPDATE MyTable SET Field3 = "NewValue" WHERE Active = 1 

现在我想为一个像这样工作的EF写一个linq到sql。 存在任何方式吗? 感谢

2 个答案:

答案 0 :(得分:6)

你不能。 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 });

答案 1 :(得分:1)

您可以在EF中使用原始查询功能。

var query = "UPDATE MyTable SET Field3 = 'NewValue' WHERE Active = 1";
using (var context = new YourContext()) 
{ 
    context.Database.ExecuteSqlCommand(query); 
}