0
我只是提出这个问题,明确有关.NET /实体框架一些混乱是可以实现延迟加载延迟加载/预先加载的概念/像我们为Database对象一样,Eager加载内存对象的概念。 我知道实体框架为数据库实体提供了内置的此功能。但我们可以用同样的方法(使用或不使用实体框架)在内存中的对象像类对象/列表等是否有可能实现对像列表(不与DB对象)内存对象
For example:
public class Student
{
public Student() { }
public Student(int studentId, string name, Address address, List<Subject> subjects)
{
StudentId = studentId;
Name = name;
Address = address;
Subjects = subjects;
}
public int StudentId { get; set; }
public string Name { get; set; }
public Address Address { get; set; }
public List<Subject> Subjects { get; set; }
}
public class Address
{
public string AddressLineOne { get; set; }
public string AddressLineTwo { get; set; }
public string City { get; set; }
public string State { get; set; }
}
public class Subject
{
public int SubjectId { get; set; }
public string SubjectName { get; set; }
}
我创建Student类的对象,具有所有属性初始化:
public ActionResult Index()
{
Student std = new Student(1, "Stduent1", new Address { AddressLineOne = "#118 D-Road", City = "CHD", State = "CHD" },
new List<Subject> {
new Subject{ SubjectId=1, SubjectName="History" },
new Subject{ SubjectId=2, SubjectName="English" }
});
return View();
}
一种选择是,我可以initiaize地址和标题的列表,只有当我需要它。但是EF实现延迟加载的方式有可能吗?
我已经研究了关于懒惰< T>,但没有得到多少澄清相同。
请提供您宝贵的意见/建议。提前致谢。
让每一个类型的成员是IEnumerable和使用查询,如选择(X => X ..)来得到,即使它可能是一个IEnumerable的一个项目所需的结果..你最终会加载一切很懒,可能的,你永远不会结束对变量== null –
@devhedgehog,对不起,我没有明白你的观点,请你多解释一下。 – Gerry
延迟加载在内存中只有结构没有任何的意义* *很大,除非您稍后提供的数据是完全随机的 - 这些数据必须来自某处。那么你打算怎么做 - 将所有数据存储在'Student'对象中,直到请求'Address'并填充它? “学生”对象中的数据将采用何种形式?当你只需要一个地址时,这是不是只有两个地址表示,并且它已经可用。 –