c# - WCF、SOAP、EF、POCO

标签 c# wcf entity-framework soap poco

我们正在开发一个应使用 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/

相关文章:

.net - 具有 peertrust 和自签名客户端证书的 WCF 传输安全性

c# - EF 是否有一个事件系统,您可以在其中修改模型,然后再保存它?

asp.net - ASP.NET连接丢失处理

vb.net - "Argument not specified for parameter",但已指定

c# - 如何在不重复的情况下将列表中的项目与所有其他项目进行比较?

c# - 我是否违反了共同封闭原则(CCP)

wpf - 首次使用 WPF 中的 WCF 非常慢

c# - ASP.NET MVC Razor 获取文本框值

c# - 当同一个用户 ID 试图在多个设备上登录时,如何终止另一台设备上的 session ?

c# - 使用 DataContractSerializer 缓慢序列化 WCF 响应