Linq 多对多?

问题描述 投票:0回答:2

假设我有多对多关系的产品和收据。有什么方法可以直接查询product.receipts或receipt.products并获取Iqueryable而无需引用join_table?

asp.net linq
2个回答
2
投票

我假设您正在使用 Linq-to-SQL。

答案是“不,但是……”

可以在Linq-to-SQL中处理多对多关系,但是您确实需要有一个单独的类型来表示联结表。

如果您只想例如针对模型对象的子属性进行数据绑定,您可以执行一些非常简单的操作,例如:-

public partial class Order
{
  public IEnumerable<Product> Products
  {
    get { return Order_Details.Select(x => x.Product); }
  }
}

请注意 select-n-plus-one 问题,但如果您想在使用订单列表时随时使用它。

此外,还有一大堆重复的问题:-

LINQ 多对多关系:解决方案?

如何加载多对多LINQ查询?

还有更多。


0
投票

Linq to Entities 和实体框架支持多对多关系。我知道 Linq to Sql 不支持,并且我认为(不确定)Linq to NHibernate 确实支持多对多。 (我知道NHibernate支持多对多)

© www.soinside.com 2019 - 2024. All rights reserved.