我用我需要的表创建了我的dbml文件。所产生的方法之一就是这样,名称已被更改,并且在语法上不正确。但是我的代码与创建的原始方法一起编译。WCF/LINQ到SQL的序列化
[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);
}
}
当我尝试使用
DataContractSerializer ser =
new DataContractSerializer(clientObj.GetType());
var memStream = new System.IO.MemoryStream();
ser.WriteObject(memStream ,clientObj);
memStream .Seek(0, System.IO.SeekOrigin.Begin);
var streamReader = new System.IO.StreamReader(memStream);
var xml = streamReader.ReadToEnd();
看起来这段代码,请参见下面连载我的结果集,它总是返回null
if ((this.serializing && (this._ToEmployees.HasLoadedOrAssignedValues == false)))
如果设置了一个破发点,并逐步通过代码然后上述声明
this._ToEmployees.HasLoadedOrAssignedValues
是真的,我得到我的对象,而不是返回空。
为什么当我单步执行代码时它的行为正确?我应该引入一个延迟,以便Entityset对象被填充?