2010-05-05 127 views
2

我正在开发一个项目,并将实体框架4用作我的ORM。我正在实施POCO课程。我用EF 4和POCO看到的每个例子都实现了与公共设置者的所有属性。这是我可以在EF 4上使用POCO课程的唯一方法吗?我所有的创作者都需要公开吗?实体框架4和公共属性

回答

0
+0

我明白为什么这些房产标记为虚拟,但为什么房产的设置者必须公开?我有对象的ID,我不希望外部对象修改。 – William 2010-05-05 22:04:00

+0

那么该物业将如何设置? – 2010-05-05 22:17:01

+0

这就是我问的问题。我有属性是对象标识符,一旦对象被加载/创建就不应该被修改。看来如果我使用EF 4和POCO类,这是不可能的。 – William 2010-05-06 03:10:33

1

这取决于你如何使用您的实体。

“POCO”实体是一种谎言(在任何框架中)。真正的POCO可能具有私有或非虚拟状态,并且没有序列化规定,因此无法进行变更跟踪。在O/R映射中你可以用它们做的唯一事情就是实现它们。

因此,人们谈论映射“POCO”时,通常会采取某种形式的妥协来允许更改跟踪。他们不是真正的“POCO”;他们是“所谓的POCO”。

妥协的一种方法是公开所有持久状态。然后,您可以通过快照进行更改跟踪。

妥协的另一种方法是使所有持久状态保护/虚拟。然后你可以通过代理来改变跟踪。这些物业没有必要公开。

EF不支持参数化构造函数(尚未),因此构造函数注入(可能是您的“纯”POCO案例的最佳解决方案)现在不是一个选项。