【发布时间】:2011-03-24 11:36:06
【问题描述】:
我想知道是否有人可以对 POCO(普通旧 CLR 对象)给出一个可靠的解释(例如)。我找到了brief explanation on Wikipedia,但它确实没有给出可靠的解释。
【问题讨论】:
标签: poco
我想知道是否有人可以对 POCO(普通旧 CLR 对象)给出一个可靠的解释(例如)。我找到了brief explanation on Wikipedia,但它确实没有给出可靠的解释。
【问题讨论】:
标签: poco
您需要提供更多详细信息,例如您计划使用 POCO 的环境。但基本思想是您将创建仅包含必要数据/代码的简单对象。这些对象不会包含(例如)框架可能需要的任何“包袱”,例如注释、额外方法、基类等。
【讨论】:
POCO 示例:
class Person {
public string FirstName { get; set; }
public string LastName { get; set; }
public string EmailAddress { get; set; }
}
【讨论】:
与其称它们为POCO,我更愿意称它们为persistence ignorant objects。
因为他们的工作很简单,所以他们不需要关心自己的用途或使用方式。
我个人认为 POCO 只是具有简单属性的公共类的另一个流行词(如 Web 2.0 - 不要让我开始使用它)。
我一直在使用这些类型的对象来保持业务状态。
当您开始使用诸如存储库模式、ORM 和依赖注入之类的东西时,就会真正看到 POCO 的主要好处。
换句话说 - 您可以创建一个 ORM(比如说 EF),它从 somewhere(数据库、Web 服务等)拉回数据,然后 project 这些数据到对象(POCO)中。
这些对象可以进一步向下传递到应用程序堆栈到服务层,然后传递到 Web 层。
那么,如果有一天你决定切换到 nHibernate,你根本就不必碰你的 POCO,唯一需要改变的就是 ORM。
因此使用了“持久性无知”一词 - 他们不在乎自己被用于什么或如何被使用。
总结一下,优点是:
希望对您有所帮助。
【讨论】:
User 数据并将它们存储在一个非常基本的“POCO”对象中。然后我序列化该对象并将其作为UserData 对象存储在 ASP.NET Auth Cookie 中。这样我以后就可以在不再次访问数据库的情况下检索它。