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'並填充它? 「學生」對象中的數據將採用何種形式?當你只需要一個地址時,這是不是隻有兩個地址表示,並且它已經可用。 –