8

有時候實體框架會生成糟糕的導航屬性名稱。使用數據庫優先方法,解決這個問題的最好方法是什麼?重命名導航屬性

我可以根據自己的喜好編輯t4模板,但是如何將這些修改後的名稱綁定到實際關係?我應該寫一個腳本來修改edmx文件嗎?顯然,手工操作是很難做到的。

+0

EF5中沒有edmx。你在說EF4嗎? – zsong

+0

@sza,這很奇怪,它聲稱是參考屬性中的第5版。我實際上做了一個「ADO.NET實體數據模型」。 –

+0

我認爲這個線程有一個更詳細的解釋,在EF 5.x T4模板中要做些什麼來實現這一點。 http://stackoverflow.com/questions/12937193/improve-navigation-property-names-when-reverse-engineering-a-database – Bostrong

回答

1

是的,你可以。在大多數情況下,您只需要從EF模型設計器重命名該NavPr並保存該模型。然後EF在您的DbContext.tt實體類中重命名該NavPr,並且不會造成任何問題。

如果遇到問題,請右鍵單擊重命名的NavPr並選擇屬性。然後將其Association屬性更改爲數據庫中的實際關係。

如果在那裏看不到相關關係名稱,請刪除該實體以及與其有關係的所有其他實體,請右鍵單擊模型設計器並選擇Update model from database。然後,只需重命名那個醜陋的NavPr並保存模型。

+3

我不想在模型設計器中做到這一點。通常有太多的表格。此外,如果需要生成新模型,所有更改都將丟失。我想要的是告訴EF如何使用命名約定。 –

+0

您可以通過在DbContext中重寫'OnModelCreating'來刪除EF的命名約定,通過這樣做,您必須將所有有關命名屬性,外鍵等的內容告訴EF ...!哪種方式更簡單? – AminSaghi

+2

'OnModelCreating'僅適用於Code First,不是嗎?我需要使用Database First的解決方案。 –