从WebService序列化对象时,对象在客户端中没有引用

时间:2012-04-18 14:00:31

标签: c# linq web-services

我已经创建了一个Web服务,并且正在使用C#和LINQ从我的数据库创建我的对象。数据库中的表与对应的对象具有相互关系。

然而,在我的客户端访问Web服务时,关系消失了。这让我相信序列化有问题。为了使序列化工作,我编辑了LINQ对象,使序列化模式为“单向”并更改了关联设置为Access =>内部属于子属性而不是公共(否则我得到循环引用错误)。

所以,现在我无法访问客户端中的对象引用。有谁知道如何解决它?它可以解决吗?

例如,在我的网络服务中我写不出来:

Recipe r = new Recipe();
r.RecipeHasCategories();

给我食谱和类别之间的关系。这在客户端不起作用!我可以访问的是该配方特有的属性(例如名称和描述)

帮助?

1 个答案:

答案 0 :(得分:2)

默认情况下,实体框架不会加载相关对象;如果您执行需要关系的操作并且实体仍然附加到EF上下文,那么它将按需执行加载。

序列化对象时,它们将与其上下文分离,并且此按需加载将停止工作。您只序列化已加载到内存中的内容。

有关如何通过.Include()方法获取原始查询中的所有相关对象,请参阅this MSDN article

更新:

由于您使用的是较旧的Linq 2 SQL提供程序,因此不会有Include方法;您只需要在执行任何查询之前通过在上下文对象上将DeferredLoadingEnabled设置为false来禁用已完成的延迟对象加载。