NHibernate操作查询导致拆分查询

时间:2018-03-06 10:26:29

标签: c# nhibernate

我有实现接口ILockable的类。 这些类在我的数据库中使用NHibernate进行映射。

我想更新数据库中存在的那些类的所有对象并实现此接口。 现在我这样做:

using (var session = SomeRandomMethodThatReturnsAHibernateSession())
        {
            using (var transaction = session.BeginTransaction(IsolationLevel.ReadCommitted))
            {
                try
                {

                    session.Query<ILockable>()
                        .UpdateBuilder()
                        .Set(x => x.LockedBy, x => null)
                        .Set(x => x.LockedAt, x => null)
                        .Set(x => x.IsLocked, x => false)
                        .Update();

                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                }
            }
        }

此代码正常运行但NHibernate在内部记录警告:

11:13:32 WARN: manipulation query [UPDATE .Select[SomeRandomNamespace.ILockable,System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKey
Token=b77a5c561934e089],[System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]](NHibernate.Linq.NhQueryable`1[SomeRandomNamespace.ILockable], Quote((,
 ) => (new Dictionary`2(Equal(, NULL) ? 4 : 4, )LockedByNULLLockedAtNULLIsLockedFalse)), )] resulted in [28] split queries

我做的是“错误的”或不是最佳做法吗?我该如何避免这种警告?

1 个答案:

答案 0 :(得分:0)

我猜你正在创建一个继承另一个模型对象的模型对象,Hibernate感到困惑并导致多个查询