【问题标题】:Linq many to many?Linq 多对多?
【发布时间】:2015-06-05 18:57:24
【问题描述】:

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

【问题讨论】:

  • Linq to SQL 或 Linq to Entities 或 Linq to NHibernate 或...?
  • @IainGalloway 仅仅因为您的答案是 C#,并不意味着问题是 C#。这真的值得编辑吗?

标签: asp.net linq


【解决方案1】:

我假设您使用的是 Linq-to-SQL。

答案是“不,但是……”

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

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

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

Beware of the select-n-plus-one problem 但如果您想在任何时候使用订单列表时使用它。

更多信息:http://www.iaingalloway.com/2015/06/many-to-many-relationships-in-linq-to-sql.htmlhere

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

LINQ many-to-many relationships: Solution?

How to load Many to many LINQ query?

and tons more.

【讨论】:

  • 这是我从 L2S 迁移到 Entity Framework,然后遇到一大堆不同问题的主要原因 ;)
  • 是的 :) 我通常说,如果 L2S “可以”,那就去吧。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2013-01-29
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    相关资源
    最近更新 更多