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

Ali*_*avi 3 c# linq sql-server entity-framework

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

UPDATE MyTable SET Field3 = "NewValue" WHERE Active = 1 
Run Code Online (Sandbox Code Playgroud)

现在我想写一个linq到sql for EF就像那样工作.存在任何方式吗?谢谢

Bac*_*cks 8

你不能.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 });
Run Code Online (Sandbox Code Playgroud)


Iva*_*azz 5

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

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