2012-02-01 66 views
0

我有兩個實體CUSTOMER和ORDER ..有一對多關係從CUSTOMER到ORDER,其中CustomerID是客戶和外鍵的主鍵在ORDER ..現在我想要在ORDER實體中添加來自CUSTOMER實體的客戶名稱屬性...我已經複製了該屬性並將其粘貼到ORDER表中並添加了CUSTOMER表並將此屬性映射到CUSTOMER表的相同屬性..但是當我嘗試驗證它時vs給我一個錯誤是實體框架一對多關係的概念模型中的關聯

3024:問題在映射片段起始於線239:必須指定的EntitySet ORDER的所有關鍵性能(ORDER.OrderID) 映射

回答

0

這是不可能的映射。這種方式不能將Customer表中的財產添加到Order實體中。將多個表中的屬性映射到同一個實體具有非常嚴格的規則,這種情況不可能。

您可以在Order類中公開客戶的名稱,而無需在映射中定義它。創建Order類的一部分的區域,並添加自定義計算財產(非映射):

public partial class Order 
{ 
    public string CustomerName 
    { 
     get 
     { 
      // Customer is navigation property to Customer entity 
      return Customer.Name; 
     } 
    } 
} 

這將需要加載CustomerOrder(立即加載)或使用延遲加載。此屬性也不能用於Linq-to-entities查詢。

+0

非常感謝您的回覆......我認爲您是在講述代碼優先的方法......但我正在做數據庫優先的方法並嘗試在設計器模式下執行......如果沒有任何解決方案這在數據庫首先我會去代碼第一 – Anup 2012-02-01 15:04:04

+0

不,我也描述數據庫的第一種方法。設計師不是爲了定義你需要的所有屬性。設計器僅用於定義映射,而映射有其嚴格的規則,您通過在未映射到「訂單」表的「Order」實體中定義屬性而違反了這些規則。 – 2012-02-01 15:06:38