【发布时间】:2015-03-24 04:41:29
【问题描述】:
我正在尝试学习实体框架,并构建了一个简单的应用程序来列出和搜索产品,到目前为止一切正常,我似乎遇到的唯一问题是在一对多表上过滤产品。
即
一个产品可以有多种类型
表结构是:-
产品
产品编号
颜色标识
产品名称
产品类型
产品类型ID
产品编号
类型ID
类型
类型ID
类型名称
到目前为止,我们的 linq 看起来像:- (ColourID 和 ProductTypeID 是传入过程的变量)
var qry = ctx.Products.AsQueryable();
qry = qry.Where(b => b.Product.ColourID == *ColorId*);
qry = qry.Where(b => b.Product.ProductTypes.Any(l => l.ProductTypeID == *ProductTypeID*));
qry.Select(c => new ProductDTO
{
ProductID = c.ProductID,
ProductName = c.Product.ProductName
}).ToList();
这实际上没有返回任何结果(已经使用 SQL 对 DB 进行了检查和测试)
【问题讨论】:
-
你能把班级结构贴出来
-
"...在一对多表上..." 当您拥有 Product 和 ProductType 时,从 EF 的角度来看,这是一个 N 到 M 的关系。这意味着您创建 2 个实体,每个实体都引用另一种类型的集合。从 EF 的角度来看,当您在交汇点/桥表上放置其他字段时,这只是 1 到 N 的关系。然后你需要创建 3 个实体。
标签: c# linq entity-framework