AddDbContext または AddDbContextPool
質問
Asp.net Coreアプリでは、どちらを使用しなければならないのでしょうか?
AddDbContext
または
AddDbContextPool
? EF Coreのドキュメントによると
AddDbContextPool
は高いパフォーマンスを提供しますが、デフォルトのAsp.net Coreプロジェクトのテンプレートは
AddDbContext
.
どのように解決するのですか?
答えはこちら("DbContext pooling"の下)です。 https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-2.0#dbcontext-pooling
DbContext
はスレッドセーフではありません。そのため、同じ
DbContext
オブジェクトを同時に複数のクエリで使用することはできません (おかしなことが起こります)。これに対する通常の解決策は、単に新しい
DbContext
オブジェクトを作成することでした。これは
AddDbContext
が行うことです。
を再利用することは悪いことではありません。
DbContext
オブジェクトを再利用することは問題ありません。それは
AddDbContextPool
が行うことです。これは複数の
DbContext
オブジェクトを生かし、毎回新しいものを作成するのではなく、未使用のものを提供します。
どちらを使うかはあなた次第です。どちらも機能します。プーリングは若干のパフォーマンス向上があります。ただし、ドキュメントでは
DbContext
クラスでプライベートなプロパティを使用していて、 クエリ間で共有されていない場合は、それを使用しないようにとの警告があります。しかし、それはかなりまれなことだと思いますので、ほとんどの場合、プーリングは適切であると思われます。
関連
-
[解決済み] アプリケーション依存関係マニフェスト(...)で指定されたアセンブリが見つかりませんでした。
-
[解決済み】Entity Framework Core: DbContextOptionsBuilder に 'usesqlserver' の定義がなく、拡張メソッド 'usesqlserver' もない。
-
[解決済み】.NET CoreとASP.NET Coreの比較
-
[解決済み] .NET Core MVCのページが変更後にリフレッシュされない
-
[解決済み] ASP.NET CoreでBootstrap 4を使用する方法
-
[解決済み] ASP.NET Core 2.0にアップグレードした後、マイグレーションを作成できない
-
[解決済み] .NET Core 3.0。Razor のビューが変更時に自動的にリコンパイルされない
-
[解決済み] .NET Core - "dotnet new sln "を使用する場合
-
[解決済み] dotnet publish が正しい appsettings.{env.EnvironmentName}.json をパブリッシュしない。
-
データベースファーストの手法でモデルを更新する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] IIS で ASP.NET Core サイトを実行できない - HTTP エラー 502.5
-
[解決済み] KendoComboBox( jquery UI ) の値を ViewModel の値に設定する方法は?
-
[解決済み】.NET CoreとASP.NET Coreの比較
-
[解決済み】AspNet Core scaffoldedアプリのLoginとRegisterページはどこにありますか?
-
[解決済み] ASP.NET Core 1.0 (ASP.NET 5 / vNext) のリリースはいつになりますか?
-
[解決済み] ConfigureServicesメソッドでIHostingEnvironmentにアクセスする
-
[解決済み] .NET Core - "dotnet new sln "を使用する場合
-
[解決済み] dotnet publish が正しい appsettings.{env.EnvironmentName}.json をパブリッシュしない。
-
データベースファーストの手法でモデルを更新する方法
-
コマンドラインから開発環境を使ってdotnet run OR dotnet watch?