2011-02-07 60 views
0

我正在阅读这本关于WCF服务的书。它所说的是创建一个包含数据库实体模型的WCF服务。例如,假设这个数据库有一个名为User的表。然后作者创建了一个名为UserDto的新类,它包含与用户的数据库表中几乎完全相同的字段。他说,这么做的原因是,当通过WCF传递数据时,您不希望传递实际创建的对象,因为它包含不需要的数据(并占用带宽)。实体框架使用传输对象通过WCF发送

我想知道的是,是否有某种类生成器为了构造这些传输类?如果我有一个包含10个或更多对象的数据库,我不想在业务层中坐下并硬编码10个对象。有没有一种工具可以为我做这样的事情(即代码生成器)?

或者任何人都可以提出一个更好的方法来做到这一点?

+2

阅读自2008版本以来Visual Studio的一部分[T4代码生成器](http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx)。它可以做这样的事情(实际上:EF代码新一代模板都是T4模板....) – 2011-02-07 21:50:44

回答

0

看看EF支持POCO。还有一个POCO模板,可以根据EDMX中定义的模型生成POCO对象。

EF and POCO

+0

....使用T4模板...... – 2011-02-07 21:55:22

+0

是的,到最后它的使用T4模板 – pdiddy 2011-02-07 22:01:41

0

阅读有关T4 code generator自2008年版本

它可以做的事情一样,这一直是Visual Studio中的一部分。实际上:EF代码生成模板(用于POCO和自我跟踪实体)都是T4模板...例如,用于在ASP.NET MVC中生成视图的模板也是如此。

优秀的资源,开始用T4:

和许许多多更多的网站,如果你去问问你的朋友Bing和谷歌:-)

2

使用POCO对象很好。但是如果你想为DTO使用正常的EF生成对象,那绝对没有理由不这样做。它们专门用于与WCF搭配使用,因此除非您的表格中有大量不希望发送给客户端的列,否则通过使用EF-C来简化代码和生活是完全合法的。生成的类。我们正在做一个相当大的WCF服务(约5000行代码,约30个实体),我们还没有遇到任何使用独立数据层的性能或体系结构问题。

我的一般经验法则是:只有在你的架构中增加一层额外的图层,当它变得非常明显,不这样做会导致你很多头痛。任何你可以合理消除的层,都这样做。