【问题标题】:Should I place POCO classes under Helpers or Models namespace?我应该将 POCO 类放在 Helpers 或 Models 命名空间下吗?
【发布时间】:2011-05-16 23:18:05
【问题描述】:

我通常创建 POCO 类并将它们放在 Helpers 命名空间下——它们不在我的数据库模型中。现在我想知道是否真的应该将它们放在 Models 命名空间下。我该如何决定?感谢您的帮助。

【问题讨论】:

  • 这些 POCO 是什么? POCO 代表普通旧 CLR 对象。它们可以是任何东西。
  • jfar 说了什么;在这种情况下,POCO 真的没有任何意义。上课是为了什么?将它们放在适当的命名空间中;如果它们代表模型,则将它们放在那里;如果有帮手,把他们放在那里。顺便说一句,“模型”对象不必是数据库模型实体。
  • 嗨 - 我知道 POCO 对象只是容器,没有功能(属性,没有方法)。这不是对的吗?谢谢。

标签: asp.net-mvc


【解决方案1】:

一般来说,POCO 指的是不知道持久性的对象,通常直接表示数据层中的模型。换句话说,您可能有一个名为 tblProducts 的表和一个名为 Product 的 POCO:

public class Product
{
   public int ProductId { get; set; }
   public string ProductName { get; set; }
}

代表那个表(但不依赖于它)。然后,您的 ORM(Nhibernate,实体框架)可以将表映射到此 POCO。

考虑到这一点,我认为将您的 POCO 放在一个完全独立的程序集中是一种很好的做法,甚至与您的数据存储库不在同一个程序集中。

通过这种方式,它们与其他问题(持久性、呈现)保持隔离,不应该依赖于其他任何东西,因此是真正的持久无知

如果您想了解更多关于 .NET 中 POCO 的信息,几个月前我回答了一个问题 here

HTH

【讨论】:

  • @Bruno Ligutti - 很高兴为您提供帮助。
【解决方案2】:

如果您指的是您的域对象(例如客户、订单),那么实际上最好将它们放在一个单独的类库项目中,这样您也可以在需要时从 MVC 应用程序外部重用它们。

【讨论】:

    【解决方案3】:

    如果这些是视图模型或模型类,那么它们可以进入Models 命名空间。您可以使用Helpers 命名空间来定义包含HtmlHelperUrlHelper 类的扩展方法的静态类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-11
      • 2010-12-20
      • 2010-12-01
      • 2011-09-30
      • 2012-11-14
      • 1970-01-01
      相关资源
      最近更新 更多