在我的EF CodeFirst DB中,我有两个实体:
public class Prod
{
public int ProductId {get;set;}
......
......
public ICollection<ProdLang> ProdLangs {get;set;}
}
public class ProdLang
{
public int ProdLangId {get;set;}
public int LangId {get;set;}
public string Name {get;set;}
public string Description {get;set;}
......
......
public Product Product {get;set;}
}
通过Eager Loading,我想加载由 ProdLang.Name 或 ProdLang.Description 订购的Prod集合,例如,通过单个 Langid
我该怎么办?
感谢。
答案 0 :(得分:1)
你的意思是加载你订购的ProdLang系列......(而不是Prod的收集)?如果是这样,这应该可行
public class Prod
{
private ICollection<ProdLang> _prodLangs;
public ICollection<ProdLang> ProdLangs
{
get{ return _prodLangs.OrderBy(p => p.Name).ToList(); }
set{ _prodLangs = value; }
}
}
答案 1 :(得分:0)
我在ProdLang类中看不到要与Prod类连接的ProductId属性,但我认为它存在。
所以,你需要这样做:
var products = from p in Context.Prod.Set
from pl in Context.ProdLang.Set
where (p.ProductId == pl.ProductId)
orderby (pl.Name)
select p;
如果您想获取ProdLang详细信息,可以使用动态类型:
var products = from p in Context.Prod.Set
from pl in Context.ProdLang.Set
where (p.ProductId == pl.ProductId)
orderby (pl.Name)
select new { Prod = p, ProdLang = pl };