0

为了纠正历史错误,May 团队一直在进行一些重构。我们将 DataContracts 和 OperationContracts 移出 BL 层并移入单独的程序集,我们切断了从接口程序集到 BL 对象的依赖关系,现在通过 ChannelFactory 而不是生成的代理来使用服务。

现在我们要开始将 EF 集成到我们的 DAL 中,它支持 BL 层。由于 EF 团队在每个版本中都进行了重大的概念更改(并不是说这是一件坏事:)),我有点迷茫。

我想将 EF 与 POCO 一起使用,并使这些 POCO 成为服务的数据合同。没有更新返回到数据库。只有数据进入 Web 服务器。我的问题是我看到了来自不同版本 EF 的各种解决方案,我不知道当前的最佳实践是什么......

有人可以帮我解决这个问题吗?当前的最佳实践是什么?是否需要在我的 POCO 上设置任何特殊属性或方法才能将它们用作数据合约?

4

1 回答 1

3

从 EF 生成 POCO 以进行网络传输的最简单和最强大的方法是使用 T4 模板。事实上 - 如果您使用 .net 4.5,EF 设计器现在使用 T4 模板而不是通常的 Visual Studio 代码生成。

T4 生成的 POCO 应该可以在不添加任何属性的情况下通过网络传输,但即使它们是 - 更改 T4 模板以满足您的需要也很简单。

就最佳实践而言,我认为没有一个“答案”,并且根据您的需要有不同的方法。在我看来,通过 T4 生成 POCO 是大多数情况下的最佳方法,因为您不需要编写任何映射代码,并且您拥有一个与数据层表示无关的 POCO 库。

这里是模板下载

http://visualstudiogallery.msdn.microsoft.com/23df0450-5677-4926-96cc-173d02752313

这是一些教程/资源

http://sharedtolearn.blogspot.co.uk/2010/06/entity-framework-40-and-t4-templates-to.html

http://msdn.microsoft.com/en-us/data/ff717739.aspx

于 2012-11-20T07:59:05.357 回答