2012-02-17 28 views
2

我正在尝试为测试目的创建模型实体。我发现很多代码生成此,如:EntityObject有多重要?

http://visualstudiogallery.msdn.microsoft.com/a850e686-df08-4245-b0bb-5872654285c9

http://visualstudiogallery.msdn.microsoft.com/d2aa9e9a-1314-4a96-8365-81771b17c597

然而,在两人面前,我注意到的是,不同于默认的Microsoft实体框架生成,实体类没有从派生EntityObject类!

这有什么缺点吗?无论如何,EntityObject类有什么优点?我检查了它的文档,但没有看到没有任何有用的功能,这些功能无法实现!

回答

2

这就是重量实体和POCO实体之间的差异。重磅实体来源于EntityObject,与EF紧密结合 - 实体并非持久无知。 POCO实体只是普通的.NET类,与持久性没有任何关系(在这种情况下是EF)。

EntityObject基于实体是“聪明的” - 因为他们知道EF存在他们有时更容易在某些情况下使用,但更难在其他情况下使用(尤其是分离的情况)。趋势是使用EF 4.0以后的POCO。

+0

你能给我举例说明基于EntityObject的实体是如何聪明的,以及它们如何变得更加困难? – Rafid 2012-02-20 08:42:45

+0

另外,在EntityObject类中需要一些东西,这是实体的状态(连接,分离等),是否可以在POCO对象中使用? – Rafid 2012-02-20 08:43:50

+0

实体知道其状态的事实就是“聪明”的例子,另一个例子是“引用”属性和EntityCollection类型化导航属性,为您提供更多选项来有效地处理导航属性。更难的例子是你想要实现持久性无知的任何事情 - 包括测试。 – 2012-02-20 09:13:39