Entity framework 如何仅通过一个查询使用字段自身的值更新字段?

Entity framework 如何仅通过一个查询使用字段自身的值更新字段?,entity-framework,entity-framework-6,Entity Framework,Entity Framework 6,考虑到folling查询: 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(); var obj=BD.Objs.Single(x=>x.id==id

考虑到folling查询:

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();
var obj=BD.Objs.Single(x=>x.id==id);
obj.p1=obj.p1+10;
BD.SaveChanges();

但是这会浪费查询对象的DB访问权限。好吧,有一种方法可以做到这一点,但您需要使用第三方库()


这是您需要安装的。此库消除了在修改实体之前检索和加载实体的需要。您也可以使用它来删除或更新实体。

我决定手动构建查询并执行它。大概是这样的:

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

简短的回答:不可能。EF永远不会生成那样的SQL。谢谢,但我不想使用任何其他libraryWell,在这种情况下,我认为没有其他方法:(
string Sql = string.Format(" UPDATE t1 SET p1 = p1 + {0} WHERE ID = {1}; ", 10,1);
Bd.Database.ExecuteSqlCommand(Sql);