問題タブ [ef-core-5.0]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - EF Core のフィルター処理されたインクルード:「インクルード内で使用されるラムダ式が無効です」
EF Core 5.0.0 で新しい「Filtered Include」機能を使用して、非常に基本的な関数を使用しようとしています。
https://docs.microsoft.com/en-us/ef/core/querying/related-data
しかし、私は問題に直面しています。次のエラーが発生します。
原因となっているコード スニペットを次に示します。ドキュメントによると、私の論理は正しいと思います。なぜこれが起こっているのかわかりません。足りないものはありますか?
Vendors は item の親です。これは非常に基本的なセットアップです。1 (ベンダー) 対多 (アイテム) の関係。
sqlite - Xamarin での EF Core SQLite のスターアップ パフォーマンスの低下
Xamarin.Android アプリケーションの起動が遅いという問題に直面しました。
最初の DbContext の作成には約 4.5 秒かかります(コンテキストには 24 個のテーブルがあります)。最初は、これの理由は、EF Core が DbContext からエンティティ クラスをスキャンしてモデルを構築するのに時間がかかるためだと思いました (これは、大規模な DbContext では理にかなっています)。
そのため、モデルを作成する時間とモデル内のテーブル数との関係を確認するために、テーブルが 1 つだけのテスト DbContext を作成しました。
DbContext テスト コード:
このコードの実行には、Samsung Galaxy S7 で3.3 秒かかります。このテストは、いくつかの解決策を試すことの不適切さを示しました。
- 使用するエンティティ クラスの数を減らす (テーブル間の接続を減らす)。
- 1 つのアプリケーション DbContext をいくつかの小さなコンテキストに分割します。
また、次のことも学びます。
- EF Core には自動移行機能がありません (無効にする必要はありません)。
- コード ファーストのアプローチを削除しましたが、DbContext の初期化時間を 4 秒に短縮するのに部分的にしか役立ちませんでした。
- この行を ConfirmCreated で削除すると、最初のリクエストの実行時間が同じ時間だけ増加します。
- 似たような問題はたくさんありますが (ここでは GitHub)、解決策はありません。このような問題は EF6 でも報告されています。
- Microsoft.EntityFrameworkCore.Sqlite 5.0.0-preview.6.20312.4 をインストールした後、大きな変化に気づきませんでした (アプリケーションの実行時間は同じです: ~ 3.3 秒)。
- PRAGMA journal_mode=WAL; 初期化速度の向上 (EF Core 2.2)。これは安定していませんが、初期化時間が 300 ~ 400 ミリ秒短縮されることがあります。
- アプリケーションに異なるデータベース用の 2 つの DbContext がある場合 (1 つ目は 1 つのエンティティ、2 つ目は 25 エンティティ)、2 つ目のコンテキストの EF Core の初期化時間は1 秒以内に大幅に短縮されます。最初のコンテキストの初期化はまだ遅いです。
- デバッグ セッションが接続されていない場合、初期化はより速く (~30%) 完了します。
EF Core 5 Preview 6 GitHubの例
この初期化時間をどうにかしてユーザーから隠し、メイン アクティビティのデータを取得するには、どのような方法を使用できますか?
デフォルト構成の初期化時間を増やすのに役立つ構成のヒントはありますか?
.NET 5 を実行するとパフォーマンスは向上しますか?