verwendetes Datenbanksystem: SQl -> EF
Hallo Leute
Ich wollte gerade eine Web-App von EF 4 auf EF5 umstellen. Eigentlich kein Problem ( ObjectContext=>DbContext )
Nun erhalte ich diese Exception seit dem Update (betrifft Binding..)> Fehlermeldung:
Data binding directly to a store query (DbSet, DbQuery, DbSqlQuery) is not supported. Instead populate a DbSet with data, for example by calling Load on the DbSet, and then bind to local data. For WPF bind to DbSet.Local. For WinForms bind to DbSet.Local.ToBindingList().
Relativ schnell habe ich dann folgendes herausgefunden:
IListSource.GetList wirft diese Exception seit EF 4.X... ( MSDN DBSET)
Normal sieht ein Aufruf etwa so aus:
GridView_NeedData(object sender, Eventargs e)
{
GridView.DataSource= BL.GetIrgendwelcheDaten();
}
Die BL Methoden liefern ein IQueryable oder ein IEnumerable, was bisher immer perfekt funktioniert hat. ( Weil GetList implementiert war )...
Nun natürlich könnte ich .ToList oder ähnliches verwenden, was aber die ganze Sache sehr umständlich machen würde. (da ich mich so z.B nicht selbst darum kümmern musste wieviel Datensätze abgerufen werden, das GridView (Paging-Einstellung) hat dies bestummen.... )
Kann ich also wirklich nicht mehr direkt an IQueryable binden ?
Beste Grüsse
Diräkt
Schritte um das Problem zu reproduzieren:
=> WebApplication mit Target Framework 4.5 erstellen
=> EF 5 installieren (NuGet)
=> GridView auf Page ziehen
=> Eine Abfrage ausführen:
Grid.DataSource = db.TestTable.Where(r => r.Id == 1);
Besten Dank für eine Antwort 😉