1
我在使用NHibernate(版本3.2,与Visual Studio 2010)时遇到问题。NHibernate渴望加载需要在这里?
我尝试在页面上加载任务。一项任务被附加到一名雇员(通过外键)。
类:
public class Task
{
private Employee employee;
public virtual Employee Employee
{
get
{
return employee;
}
set
{
employee = value;
}
}
}
库-方法:
public List<Task> GetAll()
{
using (ISession session = Configuration.SessionProvider.OpenSession())
{
var tasks = session
.CreateCriteria(typeof(Task))
.List<Task>()
.ToList();
return tasks;
}
}
映射:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Test1.Domain.Model" assembly="Test1.Domain">
<class name="Task" table="Task">
<id name="Id" column="TaskId">
<generator class="identity"/>
</id>
<many-to-one name="Employee" class="Employee" column="EmployeeId"/>
</class>
页:
因为代理服务器设置为任务的员工属性Initializing[Test1.Domain.Model.Employee#1]-Could not initialize proxy - no Session.
:
<asp:GridView runat="server" ID="taskGrid" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Id" HeaderText="Task ID" />
<asp:BoundField DataField="Employee" HeaderText="Employee" />
</Columns>
</asp:GridView>
taskGrid.DataSource = taskRepository.GetAll();
taskGrid.DataBind();
每当我在浏览器中打开页面时,得到一个错误。
与调试步骤(F10)相同。但是当我进入GetAll() - 方法(F11)时,任务的员工将完全加载(无代理)。
我很困惑为什么NHibernate对不同的调试技术有不同的反应。我最感兴趣的是
- 我是否需要在我的情况下急切加载?
- 为什么加载的相关实体依赖于我调试NHibernate的方式?
漂亮的所有任务 - 不知道这一点.. – bernhardrusch 2012-03-20 11:02:57