【发布时间】:2010-10-03 02:24:15
【问题描述】:
当我尝试访问存储在我的域对象的属性中的对象时,我遇到了这个异常。我做了一些研究,但仍然不明白为什么我会收到这个错误。
我有一个非常基本的存储库,我在其中创建一个会话,然后使用 ICriteria 查询从结果列表中获取第一条记录。我的连接域对象具有映射到服务器的一对多关系。为什么会话在获取 Connection 对象时不包括服务器作为代理?我对 NHibernate 的会话管理不是很熟悉。
这是我的实现:
域对象:
public class Connection {
public virtual int Id { get; private set; }
public virtual string FullName { get; set; }
public virtual string Email { get; set; }
public virtual string NickName { get; set; }
public virtual string Alternative { get; set; }
public virtual bool IsInvisible { get; set; }
public virtual Server CurrentServer { get; set; }
}
public Connection GetConnection()
{
using (ISession session = NHibernateHelper.OpenSession())
{
ICriteria crit = session.CreateCriteria(typeof(Connection));
crit.SetMaxResults(1);
IList<Connection> connection = crit.List<Connection>();
return connection[0];
}
}
上面会成功返回一个Connection对象。但是访问 CurrentServer 属性时会抛出异常。我的假设是 NHibernate 知道该对象与“CurrentServer”的关系,因此会在请求时懒惰地加载该对象。谁能告诉我我在哪里误入歧途?
谢谢!
【问题讨论】:
标签: c# nhibernate design-patterns orm fluent-nhibernate