J'ai une question avec laquelle je suis aux prises avec ADO.NET Data Services:Services de données ADO.NET: appels non asynchrones?
Lors de l'assemblage d'une entité pour le stockage, j'ai besoin d'obtenir une valeur liée à partir d'un fichier de recherche. Par exemple, une personne a un code d'état assigné de 'Pending' qui se trouve dans une table appelée StatusCodes.
Dans Entity Framework, il faudrait que la valeur de person.StatusCode soit égale à une instance de StatusCode. Dans le cadre d'entité ou linq2sql je voudrais donc quelque chose comme ceci:
var person = Person.CreatePerson(stuff);
var statCode = myContext.StatusCodeSet.Where(sc => sc.Description == "Pending").FirstOrDefault();
person.StatusCode = statCode;
// ...more code here...
myContext.BeginSaveChanges(SaveChangesOptions.Batch,
new AsyncCallback(OnSaveAllComplete),
null);
La requête pour la STATCODE ne fonctionnera pas dans ADO.NET Data Services et je reçois une erreur d'exécution dire la fonction est pas prise en charge. Je suppose que c'est parce que la recherche statCode n'est pas un appel Async.
Cependant,
var person = Person.CreatePerson(stuff);
var query = from stat in myContext.StatusCodeSet
where stat.Description == "Pending"
select stat;
var dsQuery = (DataServiceQuery<StatusCode>)query;
dsQuery.BeginExecute(
result => tutorApplication.StatusCode = dsQuery.EndExecute(result).FirstOrDefault(), null);
// ...more code here...
myContext.BeginSaveChanges(SaveChangesOptions.Batch,
new AsyncCallback(OnSaveAllComplete),
null);
ne fonctionne pas non plus en raison de la nature Async de la requête, le résultat ne sera pas de retour avant que la personne arrive, sauf.
Est-ce que je m'approche de cela correctement?
Merci