2017-10-11 4 views
2

私のDbContextの作成/コンパイルには(3分以上)時間がかかります。 Webサーバーは約5秒後に起動しますが、データベースに最初のクエリを実行すると、EF 2.0はデータベースをメモリなどで「ビルド/作成/コンパイル」する必要がありますか?次のリクエストはほぼ即時です。これはDbContextのデータベースファースト作成であり、データベースはすでにMSSQLに存在し、データを持っています。 DbContextには約500個のDbSetとリレーションが含まれます。スタートアップ/最初のクエリが極端に遅い

開発時にWebサーバーを実行する前に、Entity FrameworkのDbContextの「作成(マッピング?)」を実行して、必要なファイル/マッピングを作成する方法があります。速すぎる?

+2

レイジーローディングはまだEntity Frameworkのコア2.0に存在しないのですか?アプリケーションが開始されるたびに、すべての要求ではありません。 – AppSum

+0

IISを使用してホストする場合は、次を参照してください。https://weblogs.asp.net/scottgu/auto-start-asp-net-applications-vs-2010-and-net-4-0-seriesまたはhttps://www.codeproject.com/Articles/795265/IIS-Asp-net-warmup-Auto-Start-Applicationそれ以外の場合、ウェブサーバーは同等の技術をサポートしている可能性があります。とにかく、それはWebサーバが開始しなければならないものです。あなたのアプリはWebサーバーが決定する前に何も実行しないので、コードだけで実行する方法はありません。 – grek40

+0

Webアプリケーション自体が約5秒で起動しますが、これは問題ありません。これは、EF Core 2.0による最初のクエリで、3分を要します。 HTMLページを表示するだけで、約5秒後に読み込まれます。 ADO.NETを使用する場合も同じですが、クエリは2秒後に表示されます。最初のクエリ(単純なdb.Articles.FirstOrDefault())でも3分以上かかるので、後続のクエリ(任意のクエリ)は通常の100msか何かをとります。 – AppSum

答えて

0

これは通常、デフォルトのエンティティフレームワークの通常の動作ですが、原因の反対側からは、このようなことを解決する方法がいくつかあります。あなたが試すことができる。例えば

  • 無効にデータベースの初期化
  • 前世代のビューを使用して "暖かい" 搭載

は、この記事を読みしてみてください:

関連する問題