2010-09-18 305 views
0

嗨,我有實體模型讓說3實體,像這樣所有相關課程:實體框架

1.-----Costumers------- 
    CustomerId 
    CustomerName 

2.----CustomersOrders----- 
    CustomerId 
    OrderId 
    Total 

3.---Orders------ 
    OrderId 
    OrderName 

而且我想在GridView中像這樣顯示一些負荷消費的訂單:

----------|---------- 
OrderName|Total 
----------|---------- 
My order | 10000 

但問題是實體數據源給我的訂單id而不是名稱我怎樣才能使用它來獲得相關OrderName的訂單?

非常感謝....

+1

請問你能更清楚地描述你的問題嗎?你也沒有寫出你的查詢表達式是什麼樣的,或者你正在使用什麼語言。 – Holstebroe 2010-09-18 12:44:01

回答

2

我假設你已經與導航性能的客戶來CustomersOrders和CustomersOrders連接到訂單中定義的三個實體。如果不使用實體模型設計器,您可以右鍵單擊實體並在實體之間添加相關關聯。請記得檢查您是否正在生成導航屬性。 如果模型上下文被設置成這樣,它可以直接查詢客戶的訂單。有幾種方法可以做到這一點。其中一個可能是LINQ表達式:

using (var context = new MyEntityContext()) 
{ 
    var query = from customerOrder 
       in context.CustomersOrders 
       where customerOrder.CustomerId.Equals(myCustomerId) 
       select customerOrder; 

    myGridView.ItemsSource = query.ToList(); 
} 

這裏我假設你在myCustomerId中有一個customerId。如果你只有一個名字,不是一個編號,你可以這樣做:

using (var context = new MyEntityContext()) 
{ 
    var query = from customerOrder 
       in context.CustomersOrders.Include("Orders") 
       where customerOrder.Customer.Name.Equals(myCustomerName) 
       select customerOrder; 

    myGridView.ItemsSource = query.ToList(); 
} 

在上面我認爲從CustomersOrders到客戶您的導航屬性被稱爲「客戶」。 「包含」確保關聯訂單被加載。如果不包含,ToList調用將假定您不需要該命令,並且您將無法在GridView中引用它們。

在您的網格視圖中,您可以使用Path = Order.OrderName和Total with Path = Total綁定到OrderName。在這裏,我假設您從CustomersOrders到訂單的導航屬性被稱爲「訂單」。