2014-04-22 67 views
0

我有許多一對多的關係,我需要如何得到這樣的結果幫助實體框架許多一對多相交

public class Customer { 
    public virtual IList<CustomerPreference> CustomerPreference { get; set; } 
} 

public class Preference { 
    public virtual ICollection<CustomerPreference> CustomerPreferece { get; set; } 
    public int DefaultValue { get; set; } 
} 

public class CustomerPreference { 
    public int Value { get; set; } 
    public virtual Customer { get; set; } 
    public virtual Preference {get; set; } 
} 

可以說我有一個customer1表和PREF1,PREF2,Pref3與默認值爲0. 如果我爲Pref1插入一個CustomerPreference記錄,其值爲1,我想查詢此結果

Customer |偏好|價值
客戶1 | Pref1 | 1
Customer1 | Pref2 | 0
客戶1 | Pref3 | 0

感謝。

+0

你的表不是「ICollections」,即使它應該是多對多的關係? –

回答

1

你試圖通過簡單的從CustomerPreference中選擇,確保你包括CustomerPreference是選擇結果。

var query = from item in context.CustomerPreference 
        .Include(cp=>cp.Customer) 
        .Include(cp=>cp.Preference) 
      select new {item.Customer, item.Preference, item.Value}; 
var result = query.ToList(); 
+0

實體或複合類型不能在LINQ to Entities查詢中構造。 –

+0

首先你應該修復你的代碼,因爲你的屬性沒有名稱'public virtual CustomerPreference' – Andrew