Wcf EF Codefirst如何在关闭动态代理的情况下加载对象层次结构

Wcf EF Codefirst如何在关闭动态代理的情况下加载对象层次结构,wcf,web-services,entity-framework,serialization,c#-4.0,Wcf,Web Services,Entity Framework,Serialization,C# 4.0,我需要序列化一个对象,以便在webservice中将其作为参数传递。我遵循了文章中的建议: 此对象非常复杂,因为它类似于分层数据结构 现在我遇到了一个问题,因为相关对象(一对多对象)没有加载,并且它们的值为null 如果我使用动态代理,这不是问题,但是动态代理对象不会序列化以在Web服务中使用 我曾尝试在dbContext中打开/关闭延迟加载,但没有任何区别 任何人都知道我如何解决这个问题,甚至可能加载代理对象并将其复制到“真实”对象 谢谢如果这是您必须拥有的关系,那么您最好使用普通的动态代理

我需要序列化一个对象,以便在webservice中将其作为参数传递。我遵循了文章中的建议:

此对象非常复杂,因为它类似于分层数据结构

现在我遇到了一个问题,因为相关对象(一对多对象)没有加载,并且它们的值为null

如果我使用动态代理,这不是问题,但是动态代理对象不会序列化以在Web服务中使用

我曾尝试在dbContext中打开/关闭延迟加载,但没有任何区别

任何人都知道我如何解决这个问题,甚至可能加载代理对象并将其复制到“真实”对象


谢谢

如果这是您必须拥有的关系,那么您最好使用普通的动态代理对象加载数据,并使用AutoMapper(或手动转换)之类的工具将其转换为您希望通过服务发送的任何内容。然后,您可以确保要发送的内容得到加载和填充


与手动加载/转换相比,试图告诉EF和WCF如何为复杂的层次结构对象自动获得正确的结果是不值得的。

您好,谢谢您的提示。你说的“自动映射器”到底是什么意思?如果可能的话,我尽量避免手动转换。是一个可以自动执行某些手动转换的库。它试图找出两个类之间的映射关系,而无需编写代码。在这种情况下,它可以帮助减少设置转换所需的工作量。但我确实认为您必须以某种方式进行转换,对于复杂的数据结构,尝试使EF和WCF在这方面发挥良好的作用是非常棘手的,而手动执行则很容易(而且可靠)。