连接多个表的实体框架问题

我拿到了产品表

产品

- > productID - 主要

- >价格

- >产品数量


productCategory -

- > prodcatID-小学

- > productId - 外键

- > categoryID - 外键


产品语言 - 表

- >产品语言 - 小学

- > productID - 外键

- > languageID - forein键

- >标题

所以我应该使用实体框架,并且我应该以某种方式获得所有产品的标题,数量和价格从给出的类别和从给出的语言 。 所以我应该以某种方式结合所有这三张表中的信息


所以我从这个开始

       var lst = db.ProuctCategories.Where(x=>x.CategoryID==catID).ToList();

并从单一类别中获得所有产品 - >但现在我对NOLKCESS没有生产语言表,并且我无法通过语言进行过滤。

如果我开始

       var lst = db.ProductLanguages.Where(x=>x.LanguageID==langID).ToList();

现在我无法访问productCategories。

我一直在想,几个小时,我找不到连接产品语言和产品类别的方法。


是否需要您在productCategory和productLanguages实体上拥有单独的Id? 如果没有,我会这样实现它:

public class Product
{
    [Key]
    public int Id { get; set; }
    public int Price{ get; set; }
    public int Qty{ get; set; }
    public virtual List<Category> Categories{ get; set; }
    public virtual List<Language> Languages{ get; set; }
}

public class Category 
{
    [Key]
    public int Id { get; set; }
    public string Description { get; set; }
    public virtual List<Product> Products{ get; set; }
}

public class Language
{
    [Key]
    public int Id { get; set; }
    public string Description { get; set; }
    public virtual List<Product> Products{ get; set; }
}

然后在覆盖OnModelCreating方法的同时定义多对多关系

modelBuilder.Entity<Product>().HasMany(p => p.Categories).WithMany(c => c.Products).Map(m => { m.MapLeftKey("ProductId"); m.MapRightKey("CategoryId"); m.ToTable("ProductCategories"); });
modelBuilder.Entity<Product>().HasMany(p => p.Languages).WithMany(l => l.Products).Map(m => { m.MapLeftKey("ProductId"); m.MapRightKey("LanguageId"); m.ToTable("ProductLanguages"); });

这样,虚拟属性应该允许您浏览实体及其关系。

请让我知道你是否解决了你的问题。

链接地址: http://www.djcxy.com/p/6393.html

上一篇: Entity Framework Issue with connecting more than one table

下一篇: Best practice multi language website