EntityFramework(ORM)对象名称和域模型名称 - 如何避免重复?

时间:2014-09-04 13:41:43

标签: c# entity-framework orm naming-conventions

假设我有一个使用Entity Framework的项目,但我想使用自己的类而不是EF类。

使用我自己的课程的原因:

  • 在代码中轻松添加属性
  • 易于推导和继承
  • 对数据库的绑定较少

现在,我的数据库的表名如UserConference

但是,在我的域项目中,我还会调用我的文件User.csConference.cs

这意味着我突然有两个具有相同命名的对象,这通常非常烦人,因为你必须一直使用命名空间来了解它们。

我的问题是如何解决这个问题?

我的想法:

  • 使用' db'前缀所有数据库表。我通常这样做,但在这种情况下,我无法更改数据库
  • 使用" Poco"前缀或后缀所有C#类或类似的东西

我只是不喜欢我的任何想法。

你通常如何做到这一点?

2 个答案:

答案 0 :(得分:1)

如果没有更多背景知识很难说,但听起来您正在使用Entity Framework设计器来生成EF类。这被称为“模型优先”workflow。您是否考虑过使用Code First /仅限代码的工作流程?首先执行代码时,您可以拥有不了解数据库,EF或数据注释的POCO类。数据库和POCO之间的映射可以在DBContextEntityTypeConfiguration类中外部完成。

您应该能够通过代码实现与仅使用一组对象从EF解耦的目标。

答案 1 :(得分:0)

要扩展上述答案,数据库表名 User (或 Users ,尽可能多的DB设计者更喜欢)是对象的持久性存储的标识符{{1您在代码文件 User.cs 中定义的内容。这些标识符都不共享相同的空间,所以不应该混淆。实际上,它们的命名方式类似于在空间(数据存储,代码,开发环境)之间创建松散耦合,因此您可以保持理智,其他人可以读取您的代码。