我真的有两个问题:
如果关闭代码生成,然后添加ADO.NET C# POCO Entity Generator,它会为您的Entity Framework 4对象提供一个很好的类表示。这个想法是(from here):
The POCO Template can be used to generate persistence ignorant entity types
from an Entity Data Model.
但是,这些对象具有对象之间的关系以及返回数据库的链接。例如,您可以从存储库中取出一个,更改它,然后在存储库或工作单元级别保存更改,并将内容保存到数据库中。
所以我的问题是本机实体框架对象与使用此工具生成的这些POCO之间有什么不同?
这是我在使用存储库更新记录时的想法。这是错的吗?
答案 0 :(得分:3)
对于POCO生成器,生成的实体类(例如,Employee,Company等)不是派生自任何特殊类(因此称为Plain Old)。 而在entityobject生成器的情况下,实体类派生自特殊的'EntityObject'类,它提供某些功能。
拥有POCO课程的目的是消除实体的DB特定问题。因此,保持我们的域模型不知道DB /持久性操作。
答案 1 :(得分:1)
POCO意味着您有一个普通的旧CLR类,它不受与持久性相关的特殊构造的污染。实体对象派生自EntityObject
类,它们使用许多与实体框架直接相关的类和属性。使用EntityObjects时,您的代码完全依赖于实体框架。
您在存储库中描述的内容在EFv1中用于实现POCO方法。目前,您可以直接使用POCO。 POCO与数据库没有任何关系。在某些情况下,POCO由EF依赖构造动态代理,但这在运行时发生,因此它不会污染您的代码。