【发布时间】:2010-05-05 21:51:28
【问题描述】:
我正在做一个项目,我正在使用 Entity Framework 4 作为我的 ORM。我正在实施 POCO 课程。我在 EF 4 和 POCO 中看到的每个示例都使用公共设置器实现所有属性。这是我可以将 POCO 类与 EF 4 一起使用的唯一方法吗?我所有的二传手都需要公开吗?
【问题讨论】:
标签: entity-framework poco
我正在做一个项目,我正在使用 Entity Framework 4 作为我的 ORM。我正在实施 POCO 课程。我在 EF 4 和 POCO 中看到的每个示例都使用公共设置器实现所有属性。这是我可以将 POCO 类与 EF 4 一起使用的唯一方法吗?我所有的二传手都需要公开吗?
【问题讨论】:
标签: entity-framework poco
这取决于你如何使用你的实体。
“POCO”实体是一种谎言(在任何框架中)。真正的 POCO,可能具有私有或非虚拟状态并且没有提供序列化,无法进行更改跟踪。在 O/R 映射中,您唯一可以对它们做的事情就是具体化它们。
所以当人们谈论映射“POCO”时,通常会有某种形式的妥协以允许更改跟踪。他们不是真正的“POCO”;他们是“所谓的 POCO”。
一种妥协的方法是公开所有持久化的状态。然后您可以通过快照进行更改跟踪。
另一种妥协的方法是使所有持久状态受保护/虚拟。然后您可以通过代理进行更改跟踪。属性不必公开。
EF 不支持参数化构造函数(目前),因此构造函数注入(可能是您使用“纯”POCO 的最佳解决方案)现在不是一个选项。
【讨论】:
【讨论】: