连接多个表的实体框架问题
我拿到了产品表
产品表
- > 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