实体与POCO之间的区别

时间:2014-04-03 18:30:40

标签: c# oop entity domain-driven-design poco

在此article中说:

  

实体框架使您可以一起使用自定义数据类   使用您的数据模型而不对数据进行任何修改   课本身。这意味着你可以使用"普通的" CLR   对象(PO​​CO),例如现有域对象,与您的数据模型。   这些POCO数据类(也称为持久性无知对象),   它们映射到数据模型中定义的实体,支持   大多数相同的查询,插入,更新和删除行为作为实体   实体数据模型工具生成的类型。

POCO是一个有行为的DTO。

那么POCO和实体不一样吗?有什么区别?

2 个答案:

答案 0 :(得分:7)

普通旧CLR对象(POCO)与Plain Old Java Object (POJO)具有相同含义。

  

这个词是在Rebecca Parsons,Josh MacKenzie和我的时候创造出来的   准备在2000年9月的一次会议上发表演讲。在谈话中我们   指出了编写业务逻辑的许多好处   常规的Java对象,而不是使用Entity Beans。我们想知道为什么   人们反对在他们的系统中使用常规对象   得出结论,这是因为简单的物品缺乏一个奇特的名字。所以   我们给了他们一个,而且非常好。

     

Martin Fowler

POCO只是一个常规对象,没有任何特定框架的引用,也没有遵循它们的接口或限制。 POCO类是可以与任何ORM一起使用的持久性无知对象。

Entity是一个具有身份且可以唯一确定的对象

实体代表域模型和域逻辑。通常它们被设计为持久性无知的POCO对象。但并非每个POCO对象都是实体。 Value Objects也被设计为POCO对象和they are not Entities.

答案 1 :(得分:1)

实体通常需要在ORM中使用特定设计,例如EF和NHibernate。延迟加载的关联通常是虚拟的,因此可以通过运行时创建代理。通常需要默认的公共构造函数。等等。

传统实体通常由设计师在EF中生成。但是在更新的版本中,可以使用所需的规则设计类并将其映射到数据库。