OrderBy与EF在一对多关系和复合键上

时间:2015-10-20 03:10:39

标签: c# asp.net entity-framework iqueryable composite-key

使用EF构建我有一个产品类

[Table("Products")]
public class Product
{
    public Product()
    {
        this.LanguageProduct = new List<LanguageProduct>();
    }
    [Key, ScaffoldColumn(false)]
    public int ProductId { get; set; }
    public virtual ICollection<LanguageProduct> LanguageProduct { get; set; }
}

通过一对多关系链接到另一个以无限数量的语言记录名称的类:

public class LanguageProduct
{
    [Key, Column(Order = 0), ForeignKey("Product")]
    public int ProductID { get; set; }
    [Key, Column(Order = 1), ForeignKey("Languages"), StringLength(6)]
    public string Language { get; set; }

    [StringLength(100), Display(Name = "Product name")]
    public string ProductName { get; set; }

    public virtual LanguagesList Languages { get; set; }
}

如果您没有注意到,LanguageProduct类具有基于两个外键的复合键。到目前为止一切正常。 在我的一个aspx页面中,我尝试用一​​种语言的产品名称填充下拉列表顺序。

public IQueryable GetProductsList()
    {
        var _db = new ApplicationDbContext();
        IQueryable query = _db.Products.OrderBy(p => p.LanguageProduct.Where(z => z.Language == "en-US").SelectMany(x => x.ProductName));
        return query;
    }

正如您可能怀疑的那样,我的问题来自那个不返回任何内容的查询。我没有成功地尝试过任何事情。除了其他的东西,我已经将MultipleActiveResultSets添加到我不喜欢的连接字符串中。 你有什么迹象要解决这个问题吗?

0 个答案:

没有答案