阅读实体框架中缺乏持久性无知我经常偶然发现POCO Adapter。问题是,有没有人在生产中使用它,它是如何进行的以及有哪些陷阱?
我考虑了应用程序设计的两种替代方案:在业务逻辑中使用POCO和适配器,并使表示层使用它们或创建在EF实体和DTO之间转换的服务层: (1)EF实体< - >适配器< - > POCO业务对象< - >介绍 要么 (2)EF实体< - >服务层< - > DTOs< - >介绍。 第一种方法似乎更干净,但我有点犹豫POCO适配器不是非常标准的解决方案,可能包含一些现在不明显的缺点。
答案 0 :(得分:7)
EFPocoAdapter已被弃用,转而使用Entity Framework 4.0。 beta release是在不到一周前宣布的,如果您是MSDN订阅者,则可以下载Beta 1。
没有理由再使用EFPocoAdapter了。我还鼓励您阅读ADO.NET实体框架Design Team blog以获取EF 4.0上所有功能的列表,这是一个很好的阅读。
另请查看此博文:POCO in the Entity Framework: Part 1 - The Experience。
至于我使用EFPocoAdapter的经验,我对POCO,延迟加载和n层场景的支持感到满意。实体框架通过提供T4模板以及其他东西进一步构建,这是我真正感到缺乏的东西(尽管许多人更喜欢手工编写他们的POCO类)。我遇到的其他问题是使用JavaScriptSerializer的serializer issues,它不处理循环引用,而DataContractSerializer这样做,需要在T4模板之前的类/成员属性不能用自动生成的类。
EFPocoAdapter始终是一种升级平台,可以从社区获得反馈并开发EF 4.0的功能集。尽管边缘有点粗糙,但我确实设法满足了我的要求,尽管经过与Jaroslaw的几次交流。那个和支持非常暗淡(很少有人在论坛或堆栈溢出)。
答案 1 :(得分:4)
您可能想要使用AutoMapper。然后,如果需要,您可以编写EF实体,POCO实体和DTO-s。两组实体似乎有点开销,但是当你需要持久性无知时,这似乎是AutoMapper最简单的方法。
答案 2 :(得分:0)
我只想在这个帖子中添加我一直在使用实体框架v4和生产中使用C#POCO生成器生成的POCO模型(大约六个月),并且它一直运行良好。
虽然在使用WCF服务时有一个few catches,所以如果你考虑通过WCF公开它们,可能值得将一个明智的概念证明放在一起,看看对象图的复杂性是否会构成任何序列化,无状态使用等问题等。