我们正在开发一个应该使用Entity Framework及其简单的WCf Soap服务(而不是Wcf数据服务)的应用程序。我很困惑,现在我已阅读以下这些帖子,但我不明白去哪里This问题几乎相同,但我有限制使用POCO并试图避免DTO。它不是那么大的服务。但是我提到的链接回答了它写的如果我尝试在线上发送POCO类,那么序列化会有问题。
This帖子已经实现了与我的问题相关的解决方案,但他没有提到任何与序列化问题有关的内容。他刚刚更改了我在许多其他文章中找到的ProxyCreationEnabled = false。
但这些帖子也不多了,所以今天的推荐是什么。我也必须发布并获得大量的Word / Excel / PDF /文本文件,因此发送POCO类是可以的,或者它会在序列化中出现问题。
谢谢!
答案 0 :(得分:2)
我绝对不同意this answer。提到的答案建议重新发明轮子(答案甚至没有说明为什么不使用POCO)。
你绝对可以选择POCO,我认为没有理由有序列化问题;但是如果你有,你可以为这些特定的有问题的部分编写DTO,并将它们映射到业务层中的POCO。
使用POCO是一个很好的做法,正如名称本身所暗示的那样;普通的旧CLR对象。再次编写相同的类而不是生成它们将没有任何优势。你可以简单地测试它。
更新:
延迟加载:延迟加载意味着在访问数据库时从数据库中获取相关对象。如果您已经对一个实体进行了序列化和反序列化(例如,您已经通过网络将该实体发送到客户端),则延迟加载将不起作用,因为您在客户端没有代理。
代理:代理类只允许与DB通信(顺便说一下,这是一个非常简单的定义)。无法在客户端使用Proxy实例;它没有任何意义。只需将Proxy类和POCO实体分成两个不同的DLL,并仅与客户端共享POCO对象。并在服务端使用代理。