Как я только начинаю с Fluent NHibernate, я создаю очень простой пример приложения, классы ведьм описаны ниже:Lazyloading не работает с Fluent NHibernate
////////// //////////////////// DOMAIN CLASSES //////////////////////////// ///
public class Company
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual IList<Employee> Employees { get; set; }
public Company()
{
Employees = new List<Employee>();
}
}
public class Employee
{
public virtual int Id { get; set; }
public virtual int Idade { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual Company objCompany { get; set; }
}
////////////////////////////// КАРТ КЛАССЫ //////// ///////////////////////
public class CompanyMap : ClassMap<Company>
{
public CompanyMap()
{
LazyLoad();
Id(x => x.Id);
Map(x => x.Name);
HasMany(x => x.Employees).Cascade.All();
}
}
public class EmployeeMap : ClassMap<Employee>
{
public EmployeeMap()
{
LazyLoad();
Id(x => x.Id);
Map(x => x.Idade);
Map(x => x.FirstName);
Map(x => x.LastName);
Map(x => x.Cargo);
References(x => x.objCompany);
}
}
//////////////////// ////////// МОЙ ВОПРОС ///////////////////////////////
Так что я хотел бы сделать, это загрузить экземпляр КОМПАНИИ, не загружая список СОТРУДНИКОВ, а затем загружать только при необходимости.
Я предполагаю, что это связано с понятием lazyloadind и, поскольку я уже объявил уровень класса LazyLoad(); Я не понимаю, почему NHibernate все еще загружает все, когда я загружаю объект КОМПАНИИ.
Вот Exemple кода для поиска объекта компании:
PS .: _nhibernateSession уже openned сессия.
public static IList<Company> FindAll()
{
return _nhibernateSession.QueryOver<Company>().List();
}
Да, я знаю, что стреляет еще один запрос для загрузки и я попытался сопоставить этот путь слишком, но он по-прежнему загружает список сотрудников. – user3027402
В моем официальном проекте у меня есть несколько таблиц со многими отношениями OneToMany, и если я загружаю каждый список, каждый раз, когда вы ищете родительский объект, у моего приложения могут быть некоторые проблемы с производительностью. – user3027402
В примере кода ... Если я ищу все компании: IList mylist = CompanyRepository.FindAll(); на данный момент .. Я хотел бы иметь ТОЛЬКО объект Компания БЕЗ КАКИГО-ЛИБО списка (null). И ТОГДА, ЕСЛИ мне нужно ... Я получаю список сотрудников, просто обращающихся к списку сотрудников. Пример: foreach (элемент var in mylist [0] .employees) { var test = item.Name; } Если я ошибаюсь, сообщите мне. Спасибо, что помогли мне! –
user3027402