考虑到后续查询:
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();
但这会浪费查询对象的数据库访问权限
答案 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);