2

当使用普通 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();
    }

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

4

1 回答 1

0

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

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

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

于 2011-05-10T12:58:51.600 回答