NHibernate搜索索引poco对象抛出TransientObjectException

时间:2011-05-10 12:38:11

标签: nhibernate nhibernate.search

在使用普通poco对象调用FullTextSession上的Index方法时抛出下面的错误,与代理对象一起正常工作。

堆栈跟踪:

[TransientObjectException:实例未与此会话关联]    NHibernate.Impl.SessionImpl.GetIdentifier(Object obj)+500

我正试图从nhibernate select方法中挤出性能我得到了以下代码:

    public virtual IList<T> LoadSearch()
    {
        return Adapater.Session.QueryOver<T>()
            .SelectList(e =>
            {
                e.Select(x => x.Id);
                e.Select(x => x.Title);
                e.Select(x => x.Description);
                return e;
            }).List<object[]>()
            .Select(props => new T
            {
                Id = (Guid)props[0],
                Title = (string)props[1],
                Description = (string)props[2]
            }).ToList();
    }

有没有办法返回代理结果?或者一些如何使列表适应代理列表?

1 个答案:

答案 0 :(得分:0)

我认为您只能索引与会话关联的对象,即代理实体。

您返回的普通POCO并非来自NH - 因此与NH会话无关。

您可以尝试在每个实体上使用ISession.Lock(instance, NHibernate.LockMode.None);将其与会话相关联,但我真的不知道这是否有效。