我有一个用例,用户可以获得产品列表,并可以选择多个产品并激活或停用它们.
这个列表的模型是不可变的,我有一个存储库,它取一个应该停用它们的模型列表.
我确实有另一个完整的产品编辑模型,但我不需要加载数百个只需更改一列.
我正在使用Session.CreateQuery,但有没有更好的方法来实现这个?
Die*_*hon 32
HQL是要走的路.
Session.CreateQuery("update Product set Active = :active where id in (:ids)")
.SetParameter("active", active)
.SetParameterList("ids", listOfSelectedProductIds)
.ExecuteUpdate();
Run Code Online (Sandbox Code Playgroud)
小智 7
从 NHibernate 5 开始,您可以使用 LINQ 进行更新/删除,如下所示:
session.Query<Product>()
.Where(p => listOfSelectedProductIds.Contains(p.Id))
.Update(p => new { Active = active });
Run Code Online (Sandbox Code Playgroud)
它不会加载实体或增加版本。
https://nhibernate.info/doc/nhibernate-reference/querylinq.html#querylinq-modifying
| 归档时间: |
|
| 查看次数: |
6527 次 |
| 最近记录: |