c# entity-framework asynchronous entity-framework-6 entity-framework-6.1

c# - EntityFramework Stored Proc Function Importar es posible leer async?



entity-framework asynchronous (1)

Estoy usando EF 6.1.1 y Database First. Cuando importo un proceso almacenado en el edmx y genero el DBContext, se ve así:

return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<TestSP_Result>("TestSP", params[]...)

Eso devuelve un ObjectResult <T>, que implementa IDbAsyncEnumerable <T>, así que estoy haciendo esto para leer los datos asincrónicos:

IDbAsyncEnumerable<T> enumerable = objectResult as IDbAsyncEnumerable<T>; IDbAsyncEnumerator<T> enumerator = enumerable.GetAsyncEnumerator(); List<T> list = new List<T>(); bool moreItems = await enumerator.MoveNextAsync(CancellationToken.None); while (moreItems) { list.Add(enumerator.Current); moreItems = await enumerator.MoveNextAsync(CancellationToken.None); } return list;

¿Esto realmente está leyendo los datos de forma asincrónica? Anexé el generador de perfiles y la instrucción SQL real se ejecuta en la línea ExecuteFunction, no al enumerar los resultados.

¿Hay una forma adecuada de ejecutar un proceso almacenado desde el DBContext y leer los resultados de forma asincrónica?


Cómo lo hago:

var results = await ctx.Database.SqlQuery<TResult>("EXEC sp_foo {0}, {1}", p1, p2) .ToArrayAsync();