如何仅使用一个查询使用自己的值更新字段?

时间:2016-09-12 21:48:24

标签: entity-framework entity-framework-6

考虑到后续查询:

UPDATE t1 SET p1 = p1 + 10 WHERE id = @id

如何只使用一个查询在EntityFramework中实现相同的行为?

目前,我正在这样做:

    var obj = BD.Objs.Single<objclass>(x=> x.id == id);
    obj.p1 = obj.p1 + 10;
    BD.SaveChanges();

但这会浪费查询对象的数据库访问权限

2 个答案:

答案 0 :(得分:1)

嗯,有办法实现,但你需要使用第三方库(Entity Framework Extended Library

context.Objs
    .Where(t => t.id== id)
    .Update(t => new Obj{ p1= t.p1+10 });

这是您需要安装的nuget package。该库消除了在修改实体之前检索和加载实体的需要。您也可以将其用于删除或更新实体。

答案 1 :(得分:0)

我决定手动构建查询并执行它。像这样:

string Sql = string.Format(" UPDATE t1 SET p1 = p1 + {0} WHERE ID = {1}; ", 10,1);
Bd.Database.ExecuteSqlCommand(Sql);