【发布时间】:2009-06-02 17:35:51
【问题描述】:
我用我需要的表创建了我的 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);
}
}
当我尝试使用序列化我的结果集时
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 对象吗?
【问题讨论】:
标签: c# linq wcf serialization