2010-02-01 81 views
3

假設我有多對多關係的產品和收據。有沒有什麼方法可以直接查詢product.receipts或receipt.products並獲得Iqueryable而不必引用join_table?Linq多對多?

+3

LINQ到SQL或LINQ到實體或LINQ到NHibernate的還是...? – 2010-02-01 12:47:44

+1

@IainGalloway僅僅因爲你的答案是C#,並不意味着問題就是C#。這真的值得編輯嗎? – Rawling 2015-05-06 11:06:22

回答

2

我假設你正在使用Linq-to-SQL。

答案是「沒有,不過......」

可以在LINQ到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.

+0

這就是爲什麼我從L2S轉移到實體框架,然後碰到一大堆不同的問題的主要原因;) – 2010-02-01 16:38:55

+0

是的:)我通常會說,如果L2S「會做」,那就去吧。 – 2010-02-02 10:00:40

0

Linq to Entities和Entity Framework支持多對多關係。我知道LINQ to Sql沒有,我認爲(不確定)Linq對NHibernate確實支持多對多。 (我知道NHibernate支持多對多)