代码之家  ›  专栏  ›  技术社区  ›  Andy

Nhibernate-在不加载实体的情况下更新单个字段?

  •  12
  • Andy  · 技术社区  · 14 年前

    我确实有另一个完整的产品编辑模型,但我不想为了简单地更改一个列而加载数百个模型。

    1 回复  |  直到 14 年前
        1
  •  32
  •   Diego Mijelshon    14 年前

    HQL是一条路要走。

    Session.CreateQuery("update Product set Active = :active where id in (:ids)")
           .SetParameter("active", active)
           .SetParameterList("ids", listOfSelectedProductIds)
           .ExecuteUpdate();
    
        2
  •  6
  •   Alex    5 年前

    由于NHibernate 5,您可以使用LINQ进行更新/删除,如下所示:

    session.Query<Product>()
        .Where(p => listOfSelectedProductIds.Contains(p.Id))
        .Update(p => new { Active = active });
    

    它不会加载实体或增量版本。

    https://nhibernate.info/doc/nhibernate-reference/querylinq.html#querylinq-modifying