【问题标题】:update records with special conditions nhibernate使用特殊条件更新记录 nhibernate
【发布时间】:2017-09-16 12:55:24
【问题描述】:

我有一个表(InquiryTable),首先我从中选择一些记录,从数据库中提取这些记录后,我将它们更新到数据库中。但我需要知道如何通过 nhibernate 同时执行这两个命令(将它们合并为一个)。

inquiry = Session.Query<InquiryTable>().Where((c => c.ID == ID)).ToList();    
inquiry.FirstOrDefault().Time= sendTime;
Session.Update(inquiry);

我想在一个命令中合并 Session.Query 和 Session.Update。这意味着我需要更新同一个查询中的 where。

【问题讨论】:

    标签: sql .net nhibernate where updatecommand


    【解决方案1】:

    适合这个概念的是 NHiberante DML

    13.3. DML-style operations

    如前所述,自动和透明的对象/关系 映射与对象状态的管理有关。这意味着 对象状态在内存中可用,因此可以操作 (使用 SQL 数据操作语言 (DML) 语句:INSERT, UPDATE, DELETE) 数据直接在数据库中不会影响 内存状态。然而,NHibernate 提供了批量的方法 SQL 风格的 DML 语句执行,通过 休眠查询语言 (HQL)。

    此功能集不是构建在 ICriteria 或 QueryOver 之上,但它确实使用了 HQL。

    文档中的一个示例,一次性对过滤后的数据进行更新:

    string hqlUpdate = "update Customer c set c.name = :newName where c.name = :oldName";
    // or string hqlUpdate = "update Customer set name = :newName where name = :oldName";
    int updatedEntities = s.CreateQuery( hqlUpdate )
            .SetString( "newName", newName )
            .SetString( "oldName", oldName )
            .ExecuteUpdate();
    

    另见:

    【讨论】:

      猜你喜欢
      • 2021-08-02
      • 2011-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-12
      • 1970-01-01
      • 2022-01-23
      相关资源
      最近更新 更多