Nhibernate更新整数字段=字段+1

Nhibernate更新整数字段=字段+1,nhibernate,Nhibernate,我在nhibernate中映射了一个简单的整数字段。 我想做一个更新,nhibernate将它转换为+1 UPDATE table_name SET revision=revision + 1 [WHERE Clause].... 有可能做出这样的事情吗?在更新时强制nhibernate按N递增字段?如果您说的是在不加载实体的情况下进行更新,答案是肯定的,我们确实有DML:。小提取物: 。。。自动透明的对象/关系映射涉及对象状态的管理。这意味着对象状态在内存中可用,因此使用SQL数据操作语言D

我在nhibernate中映射了一个简单的整数字段。 我想做一个更新,nhibernate将它转换为+1

UPDATE table_name SET revision=revision + 1 [WHERE Clause]....

有可能做出这样的事情吗?在更新时强制nhibernate按N递增字段?

如果您说的是在不加载实体的情况下进行更新,答案是肯定的,我们确实有DML:。小提取物:

。。。自动透明的对象/关系映射涉及对象状态的管理。这意味着对象状态在内存中可用,因此使用SQL数据操作语言DML语句进行操作:直接在数据库中插入、更新、删除数据不会影响内存中的状态。但是,NHibernate提供了通过Hibernate查询语言HQL执行大容量SQL样式DML语句的方法

这是一种方法,如何使用我们拥有的映射,创建描述更新的HQL,直接在DB引擎上执行,而无需任何数据加载

转换示例:

ISession session = sessionFactory.OpenSession();
ITransaction tx = session.BeginTransaction();


string hqlUpdate = "update TheMappedEntity e set e.Revision=(e.Revision + 1) where...";
int updatedEntities = s.CreateQuery( hqlUpdate )
        .SetString( ... // set params
        .ExecuteUpdate();

tx.Commit();
session.Close();
最大的优点是,我们使用的是实体映射,而不是原始SQL