2014-09-04 114 views
0

假設我有一個使用實體框架的項目,但我想使用自己的類而不是EF類。EntityFramework(ORM)對象名稱和域模型名稱 - 如何避免重複?

理由使用我自己的類:

  • 容易在代碼中添加屬性
  • 容易推導和繼承
  • 裝訂到數據庫現在

,我的數據庫中有表格名稱如UserConference

但是,在我的域名項目中,我也打電話給我的文件User.csConference.cs

這意味着我突然有兩個具有相同命名的對象,這通常非常煩人,因爲您必須始終使用命名空間來了解其差異。

我的問題是如何解決這個問題?

我的想法:

  • 前綴與 'DB' 的所有數據庫表。我經常這樣做,但在這種情況下,我不能更改數據庫
  • 前綴或後綴的所有C#類與「波科」或類似的

我只是不喜歡我的任何想法的東西。

你通常如何做到這一點?

+0

所以你不能改變數據庫名稱,你不想改變c#類的名字,但你希望它們不同?這是一些趕上,Catch-22 – Colin 2014-09-04 13:46:57

+0

@Colin我預期的答案類型;)我希望爲魔豆,我看不到一些非常明顯的解決方案 – 2014-09-04 13:47:43

回答

1

很難說沒有更多的背景,但它聽起來像你使用實體框架設計器來生成EF類。這被稱爲「Model First」workflow。您是否考慮過使用Code First/Code Only工作流程?首先執行代碼時,您可以擁有不知道數據庫,EF或數據註釋的POCO類。數據庫與您的POCO之間的映射可以在DBContextEntityTypeConfiguration類中進行。

您應該能夠實現您的目標,即通過代碼首先僅通過一組對象從EF中解耦。

0

要擴展上面的回答,數據庫表名用戶(或用戶儘可能多的DB設計師喜歡)是持久性存儲爲在你的代碼文件User.cs定義的對象User標識。這些標識符都不共享相同的空間,所以不應該有混淆。實際上,它們的命名方式與跨空間創建鬆散耦合(數據存儲,代碼,開發環境)相似,因此您可以保持理智,其他人可以閱讀代碼。