0
我有这样的代码:ExecuteReaderAsync与ReadAsync和ObjectContext.Translate跳过第一行
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);
}
}
然而,这种跳过第一行中的结果集。如果我将其更改为
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);
}
}
我找回所有行。有没有人遇到过这个?如果是这样,是否有解决方法或不同的方式来打电话?相应的同步调用cmd.ExecuteReader()
和reader.Read()
运行没有任何问题,并始终返回所有行。
这可能是因为'Translate'方法“取得了读者的所有权”并首次调用“Read”(或“ReadAsync”)。你只是想明白为什么,或者是否有问题? – CodingGorilla