正如我只是用流利的NHibernate的开始,我创建应用程序的非常简单的例子工作,巫类描述如下:惰性加载不流利的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在加载一个COMPANY对象时仍然会加载所有的东西。
这里是一个代码为例来搜索公司对象:
PS:_nhibernateSession已经是一个openned会话。
public static IList<Company> FindAll()
{
return _nhibernateSession.QueryOver<Company>().List();
}
是的,我知道它的发动另一查询来加载和我试过这种方式过于地图,但它仍然加载雇员名单。 – user3027402
在我的官方项目中,我有一些有许多OneToMany关系的表,如果我加载每个列表,每次搜索父对象,我的应用程序可能会有一些性能问题。 – user3027402
在一个代码示例... 如果我搜索所有公司的: IList的 MYLIST = CompanyRepository.FindAll(); 在这一点..我想只有对象公司WITHOUT ANY列表(空)。 然后,如果我需要......我得到刚刚访问员工名单的员工名单。像这样: foreach(var item in mylist [0] .employees) { var test = item.Name; } 如果我错了,请让我知道。 谢谢你试图帮助我! –
user3027402