我们正在开发一个应使用 Entity Framework 及其简单的 Wcf Soap 服务(而不是 Wcf 数据服务)的应用程序。我现在很困惑我已经阅读了以下这些帖子,但我不明白该去哪里This问题几乎相同,但我有使用 POCO 的限制并尽量避免 DTO。它不是那么大的服务。但是我在回答中提到的链接写道,如果我尝试在线发送 POCO 类,则会出现序列化问题。
This帖子已经实现了与我的问题相关的解决方案,但他没有提到任何与序列化问题相关的内容。他刚刚更改了 ProxyCreationEnabled =false,我也在许多其他文章中找到了这一点。
但是这些帖子也有点旧了,所以今天的推荐是什么。我还必须发布并获取大量 Word/Excel/PDF/Text 文件,因此可以发送 POCO 类吗?否则序列化时会出现问题。
谢谢!
最佳答案
我绝对不同意this answer 。提到的答案建议重新发明轮子(答案甚至没有说明为什么不使用 POCO)。
你绝对可以使用 POCO,我认为没有理由出现序列化问题;但如果有的话,您可以为这些具体有问题的部分编写 DTO,并将它们映射到业务层的 POCO。
顾名思义,使用 POCO 是一种很好的做法;普通旧 CLR 对象。再次编写相同的类而不是生成它们不会有任何优势。您可以简单地测试一下。
更新:
延迟加载:延迟加载是指每当访问相关对象时都从数据库中获取相关对象。如果您已经序列化和反序列化一个实体(例如,您已通过线路将实体发送到客户端),则延迟加载将不起作用,因为您在客户端不会有代理。
代理:代理类仅支持与数据库通信(顺便说一句,这是一个非常简单的定义)。客户端无法使用Proxy实例;它没有任何意义。只需将 Proxy 类和 POCO 实体分离到两个不同的 DLL 中,并仅与客户端共享 POCO 对象即可。并在服务端使用代理。
关于c# - WCF、SOAP、EF、POCO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12258033/