使用其中一种的优点是什么?我知道POCO课程更优化,但它们值得过度杀伤?我们是否应该一直使用POCO?或者是否有一段时间您应该更喜欢实体框架类?POCO与实体框架生成的类?
9
A
回答
8
EF默认类都从EF基类继承,而POCO不(因此名称)。从EF基类继承而来,变更追踪背后的逻辑对你来说是隐藏的,所有的逻辑都存储在持有对象引用的上下文中。如果你在连接状态下工作,那么这是首选,也就是说,你在有实体的同时有上下文。这通常是您建立“胖”客户端的情况,所以客户端和数据库是唯一的两个层。另一方面,如果您使用的是Web服务/ Web表单,那么您传递的实体没有上下文并且必须自己跟踪状态 - 那么POCO是更好的选择,因为它们将跟踪对象的属性更改为可以转移的属性,直到您决定将更改应用于上下文并保存为止。另一个好处是你的客户不必是.NET,也不需要EF.DLL反序列化你的对象。
2
我使用POCO的原因是关注点的分离,即我不希望我的前端必须知道我的后端是如何工作的。所以如果我想从Linq To Sql更改为EF或N休眠,我不必修改我的前端代码。
2
如果您需要干净的架构,松耦合和最高的可测性,请使用POCO。
如果你不关心这些东西,那就不要使用它们。
对我个人而言,这些是任何应用程序中最重要的事情(尤其是需要长时间维护的应用程序),因此我总是使用POCO。
有鉴于此,POCO要求您实施某种更改跟踪机制,这可能会非常棘手。但这是一次性设置,值得努力。
我在一个自定义的DLL中有这个逻辑,我在项目之间共享 - 所以我不必一直这样做。
有关POCO为什么在一般意义上很重要的更多信息(而不是EF/.NET特定),请参阅我的回答here。
1
请看下面的文章:
相关问题
- 1. 实体框架4和使用Poco实体生成器生成POCO类
- 2. 实体框架4.0生成的实体集与POCO与INotifyPropertyChanged/IDataErrorInfo
- 3. 实体框架 - 生成类
- 4. 实体框架POCO
- 5. POCO实体框架
- 6. 实体框架+ POCO
- 7. 实体框架的元数据类POCO
- 8. 如何在实体框架的POCO类
- 9. 实体框架中的POCO
- 10. 实体框架重新创建POCO类
- 11. 实体框架4 POCO与字典
- 12. 与自动生成的POCO实体
- 13. 实体框架4和POCO
- 14. 实体框架+ POCO垮台?
- 15. 实体框架4.1 - 在POCO
- 16. 实体框架4 POCO代
- 17. 克隆实体框架POCO
- 18. 实体框架和POCO
- 19. 实体框架POCO关系
- 20. 实体框架POCO对象
- 21. 实体框架数据库首先POCO T4生成和验证
- 22. 向实体框架添加代码4生成POCO
- 23. 实体框架 - 生成空类
- 24. 从WSDL生成实体框架类
- 25. 使用实体框架的每种类型表继承反向POCO生成器
- 26. 使用实体框架生成POCO类和现有数据库的映射
- 27. Asp.net mvc,实体框架,Poco - 架构
- 28. 实体框架和自我跟踪实体与POCO
- 29. 使用实体框架模型在项目中生成POCO类到项目
- 30. 实体框架5 - 如何从现有数据库生成POCO类
为什么就不能代表你的 “POCO” 与您的EF生成的类可以实现接口?然后你的用户界面(或上层服务)可以通过改变接口定义来实现松耦合和可测试性......而且不需要编写/执行转换函数。 – Reddog 2011-01-09 21:16:00