J'ai créé mon fichier dbml avec les tables dont j'ai besoin. Une des méthodes générées est en tant que telle, les noms ont été changés et ce n'est pas syntaxiquement correct. Mais mon code compile avec la méthode originale créée.Sérialisation dans 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);
}
}
Quand j'essaie de sérialisation mon ResultSet en utilisant
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();
Il ressemble à ce code, voir ci-dessous, il retourne toujours null
if ((this.serializing && (this._ToEmployees.HasLoadedOrAssignedValues == false)))
Si je mets un point de rupture et étape à travers le code, puis la déclaration ci-dessus
this._ToEmployees.HasLoadedOrAssignedValues
est vrai et j'obtiens mon objet plutôt qu'une nulle étant retournée. Pourquoi est-ce qu'il se comporte correctement lorsque je passe le code?
Dois-je introduire un délai pour que l'objet Entityset soit rempli?