Tôi đã có cấu trúc bảng thực sự cơ bản này:LINQ to Entities - tải háo hức sử dụng Bao gồm()
dbo.tblCategory
dbo.tblQuestion (nhiều đến một mối quan hệ với tblCategory)
dbo.tblAnswer (nhiều mối quan hệ với tblQuestion)
Vì vậy, về cơ bản, những gì tôi đang cố gắng làm là khi tôi tải một danh mục, tôi cũng muốn tải tất cả các câu hỏi và tất cả các câu trả lời.
Bây giờ, tôi đã có thể làm điều này bằng cách sử dụng đoạn mã sau:
public tblCategory Retrieve(int id)
{
using (var entities = Context)
{
var dto =
(from t in entities.tblCategory.Include("tblQuestion")
.Include("tblQuestion.tblAnswers")
where t.Id == id
select t).FirstOrDefault();
return entities.DetachObjectGraph(dto);
}
}
}
Tuy nhiên, tôi không hoàn toàn say mê với điều này; nếu tên mối quan hệ thay đổi trong mô hình của tôi; Tôi sẽ không gặp lỗi khi xây dựng dự án. Lý tưởng nhất, tôi muốn sử dụng một biểu thức lambda; một cái gì đó như thế này:
public tblCategory Retrieve(int id)
{
using (var entities = Context)
{
var dto =
(from t in entities.tblCategory.Include(t => t.tblQuestion)
where t.Id == id
select t).FirstOrDefault();
return entities.DetachObjectGraph(dto);
}
}
Bây giờ, với đoạn mã trên; Tôi đang bị mắc kẹt về cách đi sâu vào bảng Hỏi & Đáp. Bất kỳ ý tưởng về những gì tôi có thể sử dụng cho một biểu thức lambda cho điều này?
LINQ to Entities in .NET 4.0 hỗ trợ tải chậm (được bật theo mặc định) theo như tôi biết. Bạn không cần phải bận tâm về điều này sau đó. =) – Jens
Giả sử chúng tôi đang ở trên 4.0. Chúng tôi vẫn đang sử dụng 3.5 trong thời gian này =) –
có thể trùng lặp với [Entity Framework .Include() với kiểm tra thời gian biên dịch?] (Http://stackoverflow.com/questions/2921119/entity-framework-include-with- biên dịch-thời gian kiểm tra) –