J'ai un code comme ceci:ExecuteReaderAsync avec ReadAsync et ObjectContext.Translate saute première ligne
List<Models.MyModel> myobjects = new List<Models.MyModel>();
using (SqlDataReader reader = await cmd.ExecuteReaderAsync())
{
if(await reader.ReadAsync())
{
myobjects.AddRange(((IObjectContextAdapter)this)
.ObjectContext
.Translate<Models.MyModel>(reader,
GetEntitySetName<DbModels.MyModel>(),
MergeOption.NoTracking);
}
}
Cependant, cette première ligne permet de sauter la ResultSet. Si je change cela à
List<Models.MyModel> myobjects = new List<Models.MyModel>();
using (SqlDataReader reader = await cmd.ExecuteReaderAsync())
{
//if(await reader.ReadAsync())
{
myobjects.AddRange(((IObjectContextAdapter)this)
.ObjectContext
.Translate<Models.MyModel>(reader,
GetEntitySetName<DbModels.MyModel>(),
MergeOption.NoTracking);
}
}
Je récupère toutes les lignes. Est-ce que quelqu'un a rencontré ça? Si oui, existe-t-il une solution de contournement ou une façon différente d'appeler? Les appels synchrones correspondants cmd.ExecuteReader()
et reader.Read()
s'exécutent sans problème et retournent toujours toutes les lignes.
C'est probablement parce que la méthode 'Translate'" prend possession "du lecteur et fait le premier appel à 'Read' (ou' ReadAsync'). Essayez-vous simplement de comprendre le pourquoi ou y a-t-il un problème? – CodingGorilla