【问题标题】:Working with Auto Generated Poco Entities使用自动生成的 Poco 实体
【发布时间】:2012-05-03 10:10:21
【问题描述】:

我正在开发一个 asp.net 应用程序,我有以下场景:

我的表有一个 edmx 文件,我从“添加代码生成项”创建了我的 Poco 实体,我的问题只是我应该在哪里添加我的自定义方法,例如(checkIfEmailExists、AddUser 等),因为如果我在运行自定义工具或更新我的 edmx 文件时将它们添加到我的 poco 实体中,实体被重新生成并且我丢失了所有方法?

【问题讨论】:

    标签: c# .net entity-framework poco


    【解决方案1】:

    您的实体应该与某些业务逻辑或安全性分开。您应该创建一个类,例如 Security,您将在其中实现那些依赖于您的实体的方法,但您不应该将它们直接添加到您的实体中。

    您创建的每个类都应尽量遵循单一职责原则。即使您的实体类可能只包含公共属性,您也应该首先考虑 AddUser 或 CheckIfEmailExists 是否真的属于这些类。如果他们不属于那里,则将他们分成自己的班级。如果您有强烈的论据将这些东西放入您的实体中,那么将这些方法放入这些实体中。

    那么,AddUser 又是做什么的呢?如果您有一个类/表 Users 和另一个类/表 UserDetails,您会将 AddUser 作为前一个类/表的一部分还是后者?

    【讨论】:

    • 我有一个名为 users 的表,我在其中执行这些功能
    • 但是你为什么把这些方法作为你的实体的一部分呢?有必要吗?您是否考虑过另一种获得预期结果的方法?
    • 我认为我应该为我所有的 poco 实体创建 bll 类并将方法放在这些类中对吗?
    • 这是我的建议。这就是我会做的。
    【解决方案2】:

    生成的类是partial - 它包含类的一部分。您可以在其他地方创建另一个文件,遵循命名(即命名空间和类名以及 partial 关键字)。执行新的自动生成时,不会重写此文件。您将自定义代码放在这里。这些文件被编译器“合并”。

    【讨论】:

      猜你喜欢
      • 2011-11-16
      • 1970-01-01
      • 2011-06-30
      • 1970-01-01
      • 2014-01-04
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      • 2011-12-16
      相关资源
      最近更新 更多