【问题标题】:Passing POCOs or EF objects to the Web project?将 POCO 或 EF 对象传递给 Web 项目?
【发布时间】:2012-10-15 02:58:23
【问题描述】:

假设我有一个包含两个项目的 Visual Studio 解决方案:一个 Web 项目和一个数据项目。

是否将EF对象从数据项目传递给Web项目,还是需要在数据项目中显式定义POCO才能传递给Web项目?

在我看来,需要创建 POCO 而不是简单地使用 EF 对象增加了另一件需要做的事情......而且我没有特别看到目的。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 entity-framework poco data-access-layer


    【解决方案1】:

    如果您使用的是 Entity Framework 4,则 EF 对象是 POCO 对象,因此应该在您的模型与您的 EF 对象匹配的任何情况下使用(CRUD 操作是典型的操作)。但是,很可能会出现标准 POCO 对象没有封装视图模型所需的所有字段的情况(我使用的典型字段是您有两个密码字段的帐户页面),因此您需要为页面创建一个模型,然后将数据传递到您的 EF POCO 对象中。

    因此,如果您使用 DbContext(为您创建 POCO 对象),则没有理由不使用这些对象。

    【讨论】:

    • 我想我和你在同一页上。澄清一下,我通常只传递 EF 对象 - 但如果视图需要更多数据,我将创建一个包含这些 EF 对象以及其他数据的 POCO。这和你说的一样吗?
    • 是的,这正是我的意思,不要害怕制作大量 POCO ViewModel,因为这只会给您带来麻烦。我曾经遇到过一种情况,我们尝试使用 EF 对象来捕获数据,但分成了几页(如向导、步骤 1,2 等),最后我们不得不放弃很多工作,因为试图弯曲EF 对象做他们不打算做的事情只是头疼
    【解决方案2】:

    将 EF 对象直接传递给 Web 项目不是一个好习惯。由于 EF 对象中发生的状态变化可以直接反映在数据库上。因此,您应该为 Web 项目显式定义 POC 对象。(我们可以将其称为 Data Model 或简称为 Model。用于从 View 检索数据的 POC 对象可以称为 View Model。在适当的情况下在这种情况下,您可以使用与 Data ModelView Model 相同的 POCO 类)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多