Korzystam z EF 6.1.1 i bazy danych jako pierwszej. Kiedy importować przechowywanej proc do edmx i wygenerować DBContext wygląda to tak:EntityFramework Stored Proc Function Import jest możliwy do odczytu async?
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<TestSP_Result>("TestSP", params[]...)
która zwraca ObjectResult < T>, który realizuje IDbAsyncEnumerable < T> tak robię to przeczytać async danych :
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;
Czy to naprawdę czyta dane asynchronicznie? Dołączyłem profiler i faktyczne instrukcje SQL uruchamiane w linii ExecuteFunction, a nie podczas wyliczania wyników.
Czy istnieje właściwy sposób uruchomienia przechowywanego procesu z DBContext i odczytania wyników asynchronicznie?
Oto kolejny sposób, aby osiągnąć to, co próbujesz zrobić. http://stackoverflow.com/questions/19250599/how-do-i-kick-off-an-entity-stored-procedure-in-ef6-async-and-not-wait-for-a-ret –
@JasonFoglia, FYI: Wszystko, co łączy rozwiązanie, to kolejkowanie synchronicznych prac nad innym wątkiem wątku, nie osiąga tego, o co pytano. – TravisWhidden