必要なテーブルを使用してdbmlファイルを作成しました。生成されたメソッドの1つは、そのようなものであり、名前は変更されており、構文的に正しいものではありません。しかし、私のコードは作成された元のメソッドでコンパイルされます。私はこのコードでは、以下を参照のように見えますWCF/LINQ to SQLのシリアル化
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();
を使用して、私の結果セットをシリアル化しようとすると、私はブレークポイントを設定した場合、それは常に
if ((this.serializing && (this._ToEmployees.HasLoadedOrAssignedValues == false)))
はnullを返します
[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);
}
}
とコードをステップして上記のステートメントを実行します。
this._ToEmployees.HasLoadedOrAssignedValues
がtrueで、nullが返されるのではなくオブジェクトを取得します。
コードを実行中に正しく動作するのはなぜですか? Entitysetオブジェクトが移入されるように遅延を導入すべきですか?