Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF/LINQ到SQL中的序列化_C#_Linq_Wcf_Serialization - Fatal编程技术网

C# WCF/LINQ到SQL中的序列化

C# WCF/LINQ到SQL中的序列化,c#,linq,wcf,serialization,C#,Linq,Wcf,Serialization,我用我需要的表创建了我的dbml文件。生成的方法之一就是这样,名称已更改,语法不正确。但是我的代码是用创建的原始方法编译的 [Association(Name="Clients_ToEmployee", Storage="_ToEmployees", ThisKey="ClientID", OtherKey="ClientID")] [DataMember(Order=70, EmitDefaultValue=false)] public EntitySet<ClientToEmploye

我用我需要的表创建了我的dbml文件。生成的方法之一就是这样,名称已更改,语法不正确。但是我的代码是用创建的原始方法编译的

[Association(Name="Clients_ToEmployee", Storage="_ToEmployees", ThisKey="ClientID", OtherKey="ClientID")]
[DataMember(Order=70, EmitDefaultValue=false)]
public EntitySet<ClientToEmployee> ClientToEmployees
{
    get
    {
        if ((this.serializing &&(this._ToEmployees.HasLoadedOrAssignedValues == false)))
        {
            return null;
        }
        return this._ToEmployees;
    }
    set
    {
        this._ToEmployees.Assign(value);
    }
}
这段代码看起来很像,如下所示,它总是返回null

if ((this.serializing && (this._ToEmployees.HasLoadedOrAssignedValues == false)))
如果我设置了一个断点并单步执行代码,那么上面的语句

this._ToEmployees.HasLoadedOrAssignedValues
是true,我得到的是我的对象,而不是返回null


为什么在我单步执行代码时它的行为正确?我是否应该引入一个延迟,以便填充EntyTeSET对象?

,您必须包含更多的代码来确定我们,但是考虑一下它可能告诉您实情。也许没有。可能由于某种原因,您正在通过与在调试器外部执行不同的代码路径。我们说不出来,因为你没有发布代码

我建议您简化场景并重试


我还建议不要从web服务返回LINQ to SQL或LINQ to Entities对象。不幸的是,Microsoft选择在基类中包含依赖于实现的数据,因此它们不能干净地序列化。

我的WCF服务也遇到了同样的问题。在我的例子中,事实是在调试时,Linq有足够的时间延迟加载子记录。当不处于调试模式时,它只是返回父记录。我的大多数方法都很好,但其中一个方法有很多父记录和很多子记录,但没有一个子记录成功。所以我把这段代码放在我的WCF方法中:

DataLoadOptions dlOptions = new DataLoadOptions();
dlOptions.LoadWith<ParentTable>(Parent => Parent.Child);
dc.LoadOptions = dlOptions;
DataLoadOptions dlOptions=newdataloadoptions();
dlOptions.LoadWith(Parent=>Parent.Child);
dc.LoadOptions=dlOptions;
DataLoadOptions dlOptions=newdataloadoptions();
dlOptions.LoadWith(Parent=>Parent.Child);
dc.LoadOptions=dlOptions;
它起作用了

我真的花了很多时间来寻找解决方案

DataLoadOptions dlOptions = new DataLoadOptions();
dlOptions.LoadWith<ParentTable>(Parent => Parent.Child);
dc.LoadOptions = dlOptions;
DataLoadOptions dlOptions = new DataLoadOptions();
dlOptions.LoadWith<ParentTable>(Parent => Parent.Child);
dc.LoadOptions = dlOptions;