【问题标题】:Entity framework use transport objects to send over WCF实体框架使用传输对象通过 WCF 发送
【发布时间】:2011-06-23 01:17:12
【问题描述】:

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

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

或者任何人都可以提出更好的方法吗?

【问题讨论】:

  • 了解T4 code generator,它自 2008 版以来一直是 Visual Studio 的一部分。它可以做类似的事情(实际上:EF 代码生成模板都是 T4 模板......)

标签: wcf entity-framework code-generation


【解决方案1】:

使用 POCO 对象很好。但是,如果您想将正常的 EF 生成的对象用于 DTO,那么绝对没有理由不这样做。它们是专门为与 WCF 配合使用而设计的,因此除非您的表有大量您不想看到发送到客户端的列,否则使用 E​​F- 来简化您的代码和您的生活是完全合法的。生成的类。我们正在一个相当大的 WCF 服务(约 5000 行代码,约 30 个实体)上执行此操作,并且我们没有遇到任何使用单独数据层可以解决的性能或架构问题。

我的一般经验法则:只有在很明显不这样做会导致您非常头疼时,才在您的架构中添加一个额外的层。任何可以合理消除的层,都可以消除。

【讨论】:

  • 不错。我只是按照我从书中读到的内容进行,只是想要人们的意见。显然没有另一层可以简化生活,所以先试试看会发生什么。
【解决方案2】:

查看 EF 对 POCO 的支持。还有一个 POCO 模板,它将根据 EDMX 中定义的模型生成这些 POCO 对象。

EF and POCO

【讨论】:

  • 是的,最终它使用了 T4 模板
【解决方案3】:

了解 T4 code generator 自 2008 版以来一直是 Visual Studio 的一部分。

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

开始使用 T4 的优秀资源:

还有更多的网站,如果你去问问你的朋友 Bing 和 Google :-)

【讨论】:

    【解决方案4】:
    猜你喜欢
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 2011-05-09
    • 1970-01-01
    相关资源
    最近更新 更多