2012-04-30 41 views
0

我有一個名爲「item」的數據庫表,它有一個名爲「itemParentID」的自引用字段。當我生成EDMX和模型時,我可以訪問作爲當前項目的父項目的「item.item1」和作爲子項目集合的「item.items1」。我也有屬性「item.itemParentID」,但我很少直接使用它。EF4 DB首先獲取關係名稱?

如何選擇這些名稱「item1」和「items1」?我從數據庫生成EDMX,並希望名稱自動成爲「topic.Parent」和「topic.Children」,這樣我就不必觸摸生成的代碼或在部分中創建其他代碼。

回答

1

這是硬編碼到EDMX世代的邏輯。該名稱是從相關實體類型的名稱推斷出來的,但在自引用關係或多重關係到相同類型的情況下,該名稱不起作用。在這種情況下,生成器會將這些數字添加到屬性名稱中。

修復它的唯一方法是重命名設計器中的屬性,但要注意這也是在從數據庫更新模型期間有時會丟失的唯一修改。

+0

我明白了。那麼你是否認爲我的方法是在局部創建一個訪問器是一個好主意?這很簡單,就像'public Item Parent {get {return Item1;}}' - 只是爲了讓代碼可讀。 – Nenotlep

+1

但是,如果您想訪問查詢中的這些關係或進行急切加載,您仍然必須使用原始屬性,因爲Linq-to-entities無法使用您的部分類中的定製屬性。 –

0

在模型(edmx)設計器中選擇屬性並打開屬性窗口。

您可以在那裏設置名稱。

我不知道更改自動生成名稱的方法。