Nur Quellen, die Umsetzung IAsyncEnumerable kann verwendet werden, für die Entity Framework asynchrone Operationen

Ich bin der Implementierung eines Modells mit EF 6.1.3 und .NET Framework 4.6.1.
Dieses Modell wird durch eine ASPNET app und durch ein ASPNET-KERN-app, aus diesem Grund es System.Daten.Wesen und es befindet sich in einer separaten assembly mymodel.dll.

Dies ist das Modell

using System.Data.Entity;
public partial class MyDbContext : DbContext
{    
        public virtual DbSet<Athlete> Athletes{ get; set; }
}
public partial class Athlete
{
    public Athlete()
    {
    }
    //...
    public string Country { get; set; }
}

Entwickle ich die MVC-Anwendung, umgesetzt in aspnet-core mit .NET Framework 4.6. Es verweist EF 6.1.3, so dass das Modell verwendet werden kann.

public class MyViewModel
{
    public IList<Athlete> ItalianAthletes{ get; set; }
}

using Microsoft.EntityFrameworkCore;
//solution: comment the previous line and use instead System.Data.Entity;
public class MyController : Controller
{
    private readonly MyDbContext _context;
    //...
    public IActionResult Index()
    {
       MyViewModel myvm = new MyViewModel();
       var result = _context.Athletes.Where(a=>a.Country=="Italy").ToList();
       myvm.ItalianAthletes = result ;
       return View(myvm);
    }
}

... und es funktioniert wie erwartet.

Nun ändern des Index-Methode async

public async Task<IActionResult> Index()
{
   MyViewModel myvm = new MyViewModel();
   var result = _context.Athletes.Where(a=>a.Country=="Italy").ToListAsync();
   await result; //at this point an exception is thrown
   //...
}

InvalidOperationException: Die Quelle IQueryable nicht umsetzen IAsyncEnumerable. Nur Quellen, die Umsetzung IAsyncEnumerable kann verwendet werden, für die Entity Framework asynchrone Operationen.

Entfernen der Where () - Klausel das problem weiterhin besteht, also das problem scheint im Zusammenhang mit ToListAsync();

var result = _context.Users.ToListAsync();

Sorgfältig Lesen Sie den text der Ausnahme, die ich verstehen, dass "die IQueryable generiert ToList() nicht implementieren IAsyncEnumerable" aber das tut nicht machen Sinn für mich, weil alle, die das Verhalten der interne ToListAsync();

Kann mir jemand helfen, besser zu verstehen, was hier passiert unter der Haube? und was kann ich tun, damit ToListAsync() funktioniert wie erwartet ?

vielen Dank im Voraus für jeden Kommentar

Schreibe einen Kommentar