2014-09-04 121 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标识。这些标识符都不共享相同的空间,所以不应该有混淆。实际上,它们的命名方式与跨空间创建松散耦合(数据存储,代码,开发环境)相似,因此您可以保持理智,其他人可以阅读代码。