2013-05-21 68 views
1

我一直在閱讀與實體框架的代碼第一種方法。不幸的是我找不到比EF4更多的文檔。但我讀過的文檔(EF4上的斯科特博客)表明我不需要映射。EF6 - 代碼優先 - 是否需要屬性映射?

因此,我使用EF6 Power Tools從現有數據庫生成代碼文件,這會生成所有我的模型類和映射文件夾。我自動查看了使用Fluent API的映射文件(我認爲這是正確的)並描述了有關這些表的詳細信息。

現在閱讀這是有道理的,它可能不會知道主鍵,所需的屬性,關係,但我沒有得到的東西是屬性到列映射從博客帖子這些都不需要,所以爲什麼我需要他們嗎?

我可以理解,如果列名不能在代碼中表示,但我的命名約定不允許這樣做,需要它們。

我問的主要原因是可維護性問題我寧願只在一個地方有特定屬性的代碼,這些行this.Property(t => t.ID).HasColumnName("ID");對我來說似乎是多餘的。

任何一個與EF6代碼第一種方法的任何有用的鏈接,將不勝感激,以及谷歌未能:)

回答

1

你當然,如果你不滿意默認列名等不需要的屬性映射。您可能需要它們來設置複合主鍵中列的順序,或者指定屬性包含數據庫生成的值(如標識/自動增量列),但即使這樣,您仍可以將列名稱從列中刪除並堅持默認設置。

列映射確實有一些用途,但我不知道任何人都有關您的情況:

  • 您可以將實體映射到現有的數據庫,而不必模仿的列名,這可能不符合標準的.NET命名約定。

  • 同樣,你可以在你的代碼中對數據庫中的不同命名約定。例如,在我工作的地方,數據庫列通常應該是camelCase,而不是PascalCase。

  • 它們允許您在以後更改屬性的名稱,而無需重新創建/遷移數據庫。

如果這些都不適用於你,那麼是的,我認爲你沒有他們可能沒問題。

+0

我最終定製了轉換過程來刪除它們,事情看起來確實需要更多的測試。 – Dreamwalker

1

EF使用公約做了很多。一旦你知道並且習慣於習慣,你可以聲明類和事物正常工作。

Code first conventions