2011-04-13 98 views
0

我使用的EntityFramework,並在我的EDMX文件我制訂兩個表:如何獲取父實體密鑰?

客戶 柱: 編號PK

和訂單 列: 編號PK 客戶編號FK其相關

當我拿Order對象有IS Customer屬性但我看不到CustomerId屬性。 我曾經使用L2SQL,我期望看到CustomerId但EF以某種方式隱藏它。

+0

請注意,有和沒有外鍵屬性的關係處理方式不同:http://stackoverflow.com/questions/5281974/code-first-independent-associations-vs-foreign-key-associations/5282275#5282275 – 2011-04-13 17:41:39

回答

2

EF edmx設計器中的添加關聯對話框允許您指定(通過複選框)是否要爲關聯創建「外鍵」(和/或導航屬性)。你確定它被檢查了嗎?

+1

我也只是寫這個;)現在我只粘貼鏈接,我仍然在我的剪貼板中的評論在這裏:http:// blogs.msdn.com/b/msdnforum/archive/2010/05/07/foreign-key-association-in-entity-framework-4.aspx VS2010中有一個嚮導截圖。值得注意的是,這是EF 4選項,不適用EF 1(.NET 3.5SP1)。 – Slauma 2011-04-13 14:45:42

+0

我無法檢查它:此功能在目標框架中不可用...(3.5) – jlp 2011-04-13 14:48:33

+0

@jpl:的確,它在EF 1(.NET 3.5)中不存在。您必須先加載客戶才能獲得外鍵。如果可以,也可以升級到.NET 4。 – Slauma 2011-04-13 14:50:27

0

在Customer屬性中,應該有一個CustomerId屬性。

所以儘量..

myOrderObject.Customer.CustomerId 
+0

這可能會強制EF加載客戶對象(如果您啓用了延遲加載)。如果你只想要ID,這可能是一個壞主意...... – MartinStettner 2011-04-13 14:31:11

+0

我不能使用myOrderObject.Customer.CustomerId,因爲myOrderObject.Customer可以爲null(是!) – jlp 2011-04-13 14:38:11

+0

然後添加一個空檢查。如果它不爲空,請使用該對象。 – Travyguy9 2011-04-13 14:39:48

0

究竟是如何在順序表中的id列命名?通常EF-Designer應該爲數據庫表中的每一列創建一個屬性。查看「映射詳細信息」頁面(您可以在EF設計器的上下文菜單中打開該頁面)以查看該列是否映射(以及屬性)。

+0

我編輯我的問題 - 列肯定是映射 – jlp 2011-04-13 14:39:54