2009-08-12 107 views
0

有沒有人知道Linq-to-Sql中正確的多對多實現的例子? 通常我在DataContext中使用中間實體(例如CustomerProducts),並在每個查詢中加入它。linq-to-sql中的多對多實現

想法是通過向部分類添加自定義屬性來隱藏中間實體與對象級別 - 在每個查詢中使用像IEnumerabe Customer.Products和IEnumerable Product.Customers這樣的集合,但是我無法編寫將正確轉換爲SQL的代碼在子查詢中。

這應該使用這種或類似的方式:

int ProductID = 555; 
Customers.Where(customer=>customer.Products.Any(product=>product.Id == productID)); 

都在SQL水平,當然。

或者我錯過了一些東西,這不是正確的方法嗎?

UPD。我正在尋找一種通過一些SQL操作來擺脫中間實體的方法。當然,我可以包裝現有的代碼。

回答

1

我還沒有測試過這個,但也許問題是您正在尋找使用IEnumerable而不是IQueryable?

建議嘗試以下操作:

public partial class Customer 
{ 

    public IQueryable<Order> Orders 
    { 
    get 
    { 
     return this.CustomerOrders.Select(co => co.Order); 
    } 
    } 
}