質問: 私は、ASP.NET Core Webアプリケーションを既存のかなり複雑なデータベースに読み取り専用モードで接続しようとしています。 データベースは、そのレイアウトをEFCに直接マッピングすることが非常に複雑です。私は、一連のクエリを使用して、そこからデータにアクセスします。これらのクエリは明確に定義されているため、問題なく事前に結果に一致するオブジェクトを定義できます。 しかし、私はこのためのデータベースコンテキストのエンティティモデルを定義する方法を見つけることができないようです。もちろん、モデルクラスに*TableAttribute*を設定することはできません。モデルにはテーブルが反映されず、単にクエリ結果が反映されるからです。 *ColumnAttribute*をモデルのプロパティに追加するだけでは、データベースコンテキストの*OnModelCreating*メソッドで、「InvalidOperationException:エンティティタイプ 'MyEntityModel'に定義するキーが必要」というエラーが表示されることもあります。 私は何の鍵を定めようとしているのですか?クエリが結果エントリのキーを持っているかのようにではなく、クエリに結果エントリのキーがあるかのようにはなりません。 残念ながら、新しいビュー、一時テーブルなどを追加するためにデータベースを変更することはできません。いずれにしても、私は読み取りアクセスのみが可能です。 私はまだEFの背後にある概念を理解していないかもしれませんが、私が見ているすべてのチュートリアル/サンプルは、最も基本的で単純なケースを扱っています。私のgoogle-fuもここでも失敗するようです。 EFを使用しないで基本的なconnect-query-disconnectを使用して問題を回避しているように見えますが、DtabaseContext / EFの方法はASP.NET Coreの原則に沿っているようです。私がそこに間違っているなら、私はそう思わないか、そうでなければ教えてください。 この作業を行う別の方法を示す可能性のあるサンプルも高く評価されます。
回答: ASP.NETコアを使用しても、Entity Frameworkコアを使用する必要はありません。 Entity Framework Coreではなく、.NET CoreおよびEntity Framework Fullの代わりにFull .NET Frameworkを使用できます。これにはいくつかの利点があります: 1 - ASP.NET Core 2(現在ベータ版)は.NET Standard 2上でうまく動作します.Full .NET Framework 4.6.1+と.NET Core 2.0+の両方が.NET Standard 2.0の実装であるため、切り替えが可能です。 NET Core 2の安定版が公開されると非常に簡単に実行できます。 2 - Entity Frameworkコア2.0(現在ベータ版)には、Entity Framework Core 1.1.1よりも多くの機能強化が施されています。バージョン2.0の作業は1.1.1よりはるかに簡単です。クエリの変換、パフォーマンスの改善、バグの減少、メソッドの増加などがあります。 そう ステップ1 >> ASP.NET CoreとフルバージョンのEntityFrameworkおよび.NET Frameworkを使用してアプリケーションを開発する ステップ2 >>安定したリリースが利用可能になると、アプリで.NET Framework 2およびEntity Framework Core 2を対象にします。 Entity Frameworkのデータベースリバースエンジニアリングツールをフルに使い、その結果を変更してEntityFrameworkコアと互換性を持たせることをお勧めします。