实体和 POCO 之间的区别

本文关键字:区别 之间 POCO 实体 | 更新日期: 2023-09-27 17:56:42

在本文中说:

实体框架使您能够同时使用自定义数据类 使用您的数据模型,而无需对数据进行任何修改 类本身。这意味着您可以使用"普通旧"CLR 对象 (POCO),例如具有数据模型的现有域对象。 这些 POCO 数据类(也称为忽略持久性的对象), 映射到数据模型中定义的实体,支持 大多数查询、插入、更新和删除行为与实体相同 由实体数据模型工具生成的类型。

POCO是一个有行为的DTO。

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

实体和 POCO 之间的区别

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

这个词是在丽贝卡·帕森斯(Rebecca Parsons)、乔什·麦肯齐(Josh MacKenzie)和我 准备在2000年9月的一次会议上发表演讲。在谈话中,我们 指出将业务逻辑编码为 常规 Java 对象,而不是使用实体 Bean。我们想知道为什么 人们非常反对在他们的系统中使用常规对象, 结论是,这是因为简单的物体没有花哨的名字。所以 我们给了他们一个,它很好地流行起来。

作者:马丁·福勒

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

实体是具有标识并且可以唯一确定的对象

实体表示域模型和域逻辑。通常,它们被设计为持久性无知的 POCO 对象。但并非每个 POCO 对象都是实体。值对象也被设计为 POCO 对象,它们不是实体。

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

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