У меня проблемы с использованием NHibernate (Версия 3.2, с Visual Studio 2010).
Я пытаюсь загрузить задачи на странице.Задание прикрепляется к сотруднику (по внешнему ключу).
класс:
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>
страница:
<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();
Всякий раз, когда я открываю страницу в браузере, появляется сообщение об ошибке:
Initializing[Test1.Domain.Model.Employee#1]-Could not initialize proxy - no Session.
, поскольку для свойства employee для задач задан прокси-сервер.
То же самое с шагом отладки (F10).Но когда я вхожу в метод GetAll () (F11), сотрудники задач полностью загружаются (без прокси-сервера).
Я запутался, почему NHibernate по-разному реагирует на разные методы отладки.Меня больше всего интересует
- Нужна ли мне энергичная загрузка в моем случае?
- Почему загрузка связанных сущностей зависит от способа отладки NHibernate?