我正在读这本关于WCF服务的书。它所说的是创建一个包含数据库实体模型的WCF服务。例如,假设此数据库有一个名为User的表。然后,作者创建了一个名为UserDto的新类,其中包含与用户数据库表中几乎完全相同的字段。他说,这样做的原因是,当通过WCF传递数据时,您不希望传递实际的实体创建对象,因为它包含不需要的数据(并占用带宽)。
我想知道的是,是否有某种类生成器为我构建这些传输类?如果我有一个包含10个或更多对象的数据库,我不想坐下来在业务层中硬编码10个对象。是否有一个工具可以为我做这样的事情(即代码生成器)?
或者有人可以提出更好的方法吗?
答案 0 :(得分:2)
使用POCO对象很好。但是如果你想为DTO使用普通的EF生成对象,那么绝对没有理由不这样做。它们专门设计用于与WCF一起使用,因此除非您的表格中有大量的列,而您不希望将这些列发送到客户端,因此使用EF-简化代码和生活是完全合法的。生成的类。我们在一个相当大的WCF服务(大约5000行代码,~30个实体)上正是这样做的,我们没有遇到任何使用单独数据层解决的性能或体系结构问题。
我的一般经验法则:只有在你的架构中添加一个额外的层才会变得非常明显,不这样做会让你头痛不已。您可以合理消除的任何层,都可以这样做。
答案 1 :(得分:0)
看看EF对POCO的支持。还有一个POCO模板,它将根据EDMX中定义的模型生成那些POCO对象。
答案 2 :(得分:0)
了解自2008版以来已成为Visual Studio一部分的T4 code generator。
它可以做那样的事情。实际上:EF代码生成模板(用于POCO和自跟踪实体)都是T4模板......例如,用于在ASP.NET MVC中生成视图的模板。
开始使用T4的优秀资源:
Code Generation with T4 Templates – A must have for developers
还有更多网站,如果你去询问你的朋友Bing和Google: - )
答案 3 :(得分:0)