在此article中说:
实体框架使您可以一起使用自定义数据类 使用您的数据模型而不对数据进行任何修改 课本身。这意味着你可以使用"普通的" CLR 对象(POCO),例如现有域对象,与您的数据模型。 这些POCO数据类(也称为持久性无知对象), 它们映射到数据模型中定义的实体,支持 大多数相同的查询,插入,更新和删除行为作为实体 实体数据模型工具生成的类型。
POCO是一个有行为的DTO。
那么POCO和实体不一样吗?有什么区别?
答案 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中生成。但是在更新的版本中,可以使用所需的规则设计类并将其映射到数据库。