Với đối tượng phân cấpBao gồm Cháu ở EF Query
public class Parent
{
public int Id { get; set; }
public virtual Child Child { get; set; }
}
public class Child
{
public int Id { get; set; }
public virtual GrandChild GrandChild { get; set; }
}
public class GrandChild
{
public int Id { get; set; }
}
và bối cảnh DB
public class MyContext : DbContext
{
public DbSet<Parent> Parents { get; set; }
}
Người ta có thể bao gồm con cháu sử dụng Lambda cú pháp (using System.Data.Entity
) như thế này:
using (MyContext ctx = new MyContext())
{
var hierarchy =
from p in ctx.Parents.Include(p => p.Child.GrandChild) select p;
}
Cú pháp Lambda ngăn chặn truy vấn nếu tên lớp là sau đó thay đổi. Tuy nhiên, nếu Parent
có ICollection<Child>
như thay vì điều này:
public class Parent
{
public int Id { get; set; }
public virtual ICollection<Child> Children { get; set; }
}
Lambda cú pháp không còn hoạt động. Thay vào đó, người ta có thể sử dụng cú pháp chuỗi:
var hierarchy = from p in ctx.Parents.Include("Children.GrandChild") select p;
Cú pháp chuỗi là tùy chọn duy nhất, hoặc có cách nào khác để sử dụng cú pháp Lambda trong tình huống này?
Upvote. Cảm ơn bạn đã bao gồm liên kết MSDN. – granadaCoder