Entity Frameworkの一括挿入/更新/削除操作が非常に遅くなることがあります。 AutoDetectChangesおよび/またはValidateOnSaveEnabledを無効にするために頻繁に提案されている調整も、必ずしも役立つとは限りません。Z.EntityFramework.Extensionsの非商用の代替手段はありますか?
NuGetのZ.EntityFramework.Extensionsが出回っていますが、一定の期間だけ動作する商用製品のようです。
https://www.nuget.org/packages/Z.EntityFramework.Extensions/
はこれまでのところ、私は実際にのみBulkInsert()、BulkUpdate()とのbulkdelete()が必要です。
私の質問は:Z.EntityFramework.Extensionsとほぼ同じことを任意の信頼性の高い非商用のライブラリーは、
ありますか?
ありがとうございました!
および削除します。https:私はバッチのEntity Framework Plus
の持ち主だ更新& &バッチを削除、あなたはこのライブラリを使用することができます。// githubの.com/loresoft/EntityFramework.Extended。バッチ挿入の場合は、100個程度のエンティティごとに新しいコンテキストを作成します。コンテキストを作成し、100を挿入して変更を保存します。その後、新しいものを作成し、次の100を挿入し、変更を保存します。トランザクションスコープ内のすべてのものをラップします。これは本当に一括挿入ではありませんが、同じコンテキストインスタンス内のすべてのエンティティを挿入するよりはるかに高速です。 – Evk
一般に、ORMはバッチ操作には適していません。これは、小石のトラック積載量を運ぶためにピンセットを使用するようなものです。これを隠すことはできません。一括挿入の最適なオプションは、SqlBulkCopyを使用して、*リアル*の、最小限ログされたストリーミング一括挿入操作を実行することです。一括更新を実行する場合は、適切なUPDATE文を使用します。外部ソースから* UPSERT *を実行したい場合は、すべてをステージング表にインポートし、MERGEを使用してターゲット表を更新してください。 –
つまり、不安定で安全でない、スケーラビリティのないプロセスを信頼性の高いプロセスに変換できるものを探しています。 1。最初から信頼性の高い拡張可能なプロセスを使用してみませんか? –