9

データベース内のすべてのアルバムレコードを取得するためのデリゲートを作成しています。別のプロジェクトでも同じように使用しましたが、なぜか今回はエラーが発生します。

私は一歩を逃したことがありますか?このエラーが表示される理由がわかりません。

コード

        public static readonly Func<CodySolutionEntities, IQueryable<Album>> SelectAlbums =
        CompiledQuery.Compile<CodySolutionEntities, IQueryable<Album>>(
            query => from q in query.Albums.Include("Photo")
                     select q);

エラー

エラー1タイプ「CodyData.Diagram.CodySolutionEntities」をタイプとして使用できません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

4

1 に答える 1

17

エラーメッセージは、CodySolutionEntitiesがから派生していないことを示しています。これは、でのみ機能するObjectContextため問題です。この場合、オブジェクトから派生する必要があります。このオブジェクトは、現時点では、使用することが推奨されるコンテキストオブジェクトです。 CompiledQueryObjectContextCodySolutionEntitiesDbContext

4.1より前のCompiledQueryEntityFrameworkバージョンでは、エンティティを管理する ObjectContext代わりに、から派生したオブジェクトが作成されたため、おそらく過去に機能していました。DbContext

この投稿で説明されているように、.NET 4.5をターゲットにできる場合は、EF5を使用できCompiledQueryます。コンパイルされたLINQtoEntityクエリが自動的にキャッシュされるため、もう必要ありません。そうでない場合は、を使用するように切り替えることを検討することをお勧めしますがObjectContext、その前に、考え方が単純にコンパイルされたりバストになったりしていないことを確認してください。

于 2013-01-12T05:53:25.383 に答える