3

阅读有关实体框架中缺乏持久性无知的信息时,我经常偶然发现POCO Adapter。问题是,有没有人在生产中使用它,它是如何进行的,有什么陷阱?

我考虑了应用程序设计的两种选择:在业务逻辑中使用带有该适配器的 POCO,并让表示层使用它们或创建在 EF 实体和 DTO 之间转换的服务层:(1) EF 实体 <-> 适配器 <-> POCO 业务对象 <-> 表示或 (2) EF 实体 <-> 服务层 <-> DTO <-> 表示。第一种方法似乎更干净,但我有点犹豫 POCO Adapter 不是非常标准的解决方案,并且可能包含一些目前不明显的缺点。

4

3 回答 3

7

EFPocoAdapter 已被弃用,取而代之的是 Entity Framework 4.0。Beta 版发布不到一周,如果您是 MSDN 订阅者,您已经可以下载 Beta 1 。

没有理由再使用 EFPocoAdapter。我还鼓励您阅读 ADO.NET Entity Framework Design Team 博客以获取 EF 4.0 上所有功能的列表,这是一本极好的阅读材料。

另请查看此博客文章:实体框架中的 POCO:第 1 部分 - 体验

至于我使用 EFPocoAdapter 的经验,我对 POCO、延迟加载和 n 层场景的支持感到满意。Entity Framework 通过提供 T4 模板以及其他东西进一步构建了这一点,这是我真正感到缺乏的东西(尽管许多人更喜欢手动编码他们的 POCO 类)。我遇到的其他问题是JavaScriptSerializer 的序列化程序问题,它不处理循环引用,而 DataContractSerializer 需要在 T4 模板之前使用自动生成的类无法实现的类/成员属性。

EFPocoAdapter 始终旨在成为一种从社区获得反馈并为 EF 4.0 开发功能集的暂存平台。虽然边缘有点粗糙,但我确实设法满足了我的要求,尽管在与 Jaroslaw 进行了几次交流之后。那和支持非常惨淡(论坛上的人很少或堆栈溢出)。

于 2009-05-23T18:21:35.957 回答
4

您可能想使用AutoMapper。然后,如果需要,您可以编写 EF 实体、POCO 实体和 DTO-s。两组实体似乎有点开销,但是当您需要对持久性无知时,这似乎是使用 AutoMapper 最简单的方法。

AutoMapper 简介

于 2009-05-23T13:58:13.803 回答
0

我只想在这个线程中添加我一直在使用 Entity Framework v4 和 POCO 模型,该模型是在生产中使用 C# POCO 生成器生成的(大约六个月),它运行良好。

但是,将它们与 WCF 服务一起使用时有一些问题,因此如果您正在考虑通过 WCF 公开它们,则可能值得将它们放在一起进行合理的概念证明,并查看对象图的复杂性是否会给无状态的序列化带来任何问题用法等

于 2010-08-20T03:52:59.790 回答