Kompilierte Abfrage keine implizite Referenz Umstellung auf ObjectContext
Ich bin erstellen Sie einen Delegaten, um alle album-Datensätze in der Datenbank. Ich habe diese verwendet werden, dieselbe Art in einem anderen Projekt, aber aus irgendeinem Grund bin ich immer eine Fehlermeldung dieser Zeit.
Habe ich eine Stufe verpasst? Ich bin mir nicht sicher, warum dieser Fehler erscheint.
Code
public static readonly Func<CodySolutionEntities, IQueryable<Album>> SelectAlbums =
CompiledQuery.Compile<CodySolutionEntities, IQueryable<Album>>(
query => from q in query.Albums.Include("Photo")
select q);
Fehler
Fehler 1 Der Typ 'CodyData.Diagramm.CodySolutionEntities' kann nicht als Typ parameter 'TArg0' in the generic type or method 'System.Data.Objects.CompiledQuery.Compile<TArg0,TResult>(System.Linq.Expressions.Expression<System.Func<TArg0,TResult>>)'. There is no implicit reference conversion from 'CodyData.Diagram.CodySolutionEntities' to 'System.Data.Objects.ObjectContext'. C:\Users\Cody\Documents\CMBS\CodySolution\CodyData\Delegates\PhotoDelegates.cs 13 13 CodyData
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Fehlermeldung zeigt an, dass
CodySolutionEntities
ist nicht abgeleitet vonObjectContext
, das ist ein problem, da dieCompiledQuery
funktioniert nur mit einemObjectContext
. In diesem FallCodySolutionEntities
muss abgeleitet werden aus einerDbContext
Gegenstand, der zu dieser Zeit, ist die empfohlene Kontext-Objekt zu verwenden.Den
CompiledQuery
wohl in der Vergangenheit gearbeitet, weil, Entity Framework-Versionen vor 4.1 erstellt ein Objekt, abgeleitet vonObjectContext
stattDbContext
für die Verwaltung der Entitäten.Wie diese post erklärt, wenn Sie in der Lage sind, zum Ziel .NET 4.5, die Sie verwenden können, EF 5, und Sie müssen nicht die
CompiledQuery
mehr, da Sie automatisch cache, kompilierte LINQ to Entity Fragen für Sie. Wenn nicht, können Sie möchten schauen Sie in den Wechsel zurück auf die Verwendung einesObjectContext
, aber bevor Sie tun, stellen Sie sicher, dass Ihre Denkweise nicht einfach zusammengestellt oder Büste.DbContext
zu tun, was ich versuche zu tun, dann?DbContext
mitCompiledQuery
. Siehe: stackoverflow.com/a/6731102/1289454 . Konnte Sie einfach mit einer Abfrage nicht kompiliert?using(var context = new CodySolutionEntities()){ var albums = context.Albums.Include(a => a.Photos); //... }