使用 nHibernate 执行内联 sql 更新表

adr*_*nos 4 nhibernate

抱歉,如果之前有人问过这个问题,我进行了搜索,但找不到任何内容。

是否可以在nHibernate中执行内联sql?我有这样的东西,我想与 dB 进行比较:

_session.CreateSQLQuery(
              @"update things
                set defaultThing = 0 where parentId = :parentId AND thingId <> :thingId")
                .SetInt32("parentId ", parent.Id)
                .SetInt32("thingId", thing.Id)
                ;
Run Code Online (Sandbox Code Playgroud)

我想我可以循环遍历一堆“东西”并将 defaultThing 设置设置为 false 然后调用_session.Update(thing),但如果我可以按照上面概述的方式做到这一点,那就太好了。

Die*_*hon 5

是的,只需使用ExecuteUpdate()该查询即可。它相当于IDbCommand.ExecuteNonQuery().

正如 kay 提到的,您也可以使用 HQL。检查12.3。DML 风格的操作