我对此进行了一些挖掘,以下是我的调查结果。
ADO.NET 数据服务:
您可以使用ADO.NET数据服务(需要SP1)以几乎零代码的方式通过网络公开您的实体框架。但据我所知,唯一的限制是事务是基于HTTP的。这意味着在序列化方面存在一些开销(我们都知道二进制序列化更快),但优点是我们服务的实现速度。
我从 John [http://twitter.com/John_Papa] 这里得到了一个非官方消息 -“使用WCF有更多的选项。在大多数情况下需要更多的工作。Astoria可以轻松地暴露实体。大多数情况下性能差异可以忽略不计。”
优点-您实际上不需要编写任何服务-您只需将验证和安全逻辑钩子绕过数据服务和实体框架即可。如果您正在使用基于HTTP的数据中心服务-例如拥有Silverlight客户端或基于HTTP的Winform / WPF前端的情况下,这是理想的。
将实体框架公开到WCF。
随着SP1的推出,越来越多的支持使用实体框架在多层架构中进行就业。这包括支持急切的加载和上下文管理。当然,在这种情况下,我们需要编写服务(以及我们方法背后的逻辑)。或者,如果我们的实体框架模型与db完全对齐,我们可以生成大部分服务,包括我们需要的方法。
推荐您阅读此http://msdn.microsoft.com/en-us/magazine/cc700340.aspx。
另一个选择可能是使用EFPocoAdapter,将纯POCO包装器用于DTO的实体框架,而不是直接暴露实体框架类。现在它是一个指南针项目,用于Entity Framework的下一个版本 http://code.msdn.microsoft.com/EFPocoAdapter。