实体Sql为多对多关系

时间:2009-04-15 08:02:12

标签: entity-framework linq-to-entities ado.net-entity-data-model entity-sql

考虑两个表Bill和Product有多对多的关系。如何使用Entity Sql获取特定产品的所有账单?

2 个答案:

答案 0 :(得分:3)

像这样的东西

SELECT B FROM [Container].Products as P
OUTER APPLY P.Bills AS B
WHERE P.ProductID == 1

将为每个Bill生成一行

另一种选择是这样的:

SELECT P, (SELECT B FROM P.Bills)
FROM [Container].Products AS P
WHERE P.ProductID == 1

哪个会为每个匹配的产品生成一行(在这种情况下只有一个) 并且该行中的第二列将包含一个嵌套的结果集,其中包含该产品的帐单。

希望这有帮助

亚历

答案 1 :(得分:0)

你需要像这样使用一些linq;

...
using (YourEntities ye = new YourEntities())
{
   Product myProduct = ye.Product.First(p => p.ProductId = idParameter);
   var bills = myProduct.Bill.Load();       
}
...

这假设您已使用权利框架为您的数据构建模型。 bills变量将包含与您的产品对象相关的Bill对象集合。

希望它有所帮助。