导航属性上的实体框架顺序(一对多)

本文关键字:顺序 一对多 框架 实体 属性 导航 | 更新日期: 2023-09-27 17:49:36

在我的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;}
}

在急切加载中,我想加载按ProdLang排序的Prod集合。名称ProdLang。描述例如,由单个组成的Langid

我能做什么?

谢谢。

导航属性上的实体框架顺序(一对多)

你的意思是加载由…(而不是收集Prod)?如果是这样,应该可以

public class Prod
{
    private ICollection<ProdLang> _prodLangs;
    public ICollection<ProdLang> ProdLangs 
    {
        get{ return _prodLangs.OrderBy(p => p.Name).ToList(); }
        set{ _prodLangs = value; }
    }
}

我看不到ProductId属性在你的ProdLang类加入Prod类,但我认为它存在。

所以,你需要做:

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 };