質問: Microsoft.Data.Entity.QueryTrackingBehavior.NoTracking _context.AddRange(portsRange); _context.SaveChanges(); } } ``` そして、私は呼び出しています`EnsureSeedData(path)`私が持っているのインスタンス私Startup.csから`MyDbContextSeedData` このアプローチによる私の発見と疑問: 1. すべてのレコードを挿入するのに30分以上かかります 2. このクラスはコアフレームワークには存在しないため、 `System.Data.SqlClient.SqlBulkCopy`ようなものは使用できません。代わりに? 3. Entity Frameworkは、舞台裏で、そしてログに基づいて、INSERT SQLステートメントを1999年の値の塊で分割しているようです。また、挿入間のDB接続を閉じるようです。私はこれがEntityによって最も効率的なやり方で管理されていると思います。 4. データベースをシードするベストプラクティスの例は見つかりませんでした。アプリケーションの起動時に、コードからアプローチとシードを似たものを使うべきでしょうか(私が挿入を行うより速い方法を見つけたと仮定して)?または、SQLスクリプトを実行する何らかの移行を使用する必要がありますか? ASP.NETコアフレームワーク**dnxcore50**を使用して大量のデータをシードする方法の例をお**聞かせください** !
回答: 私はあなたがSystem.Data.SqlClient.SqlBulkCopyについて間違っていると信じています: 彼らが推奨しているように、エンティティ・フレームワーク(ストライプが何であれ)を破棄し、これが進行中のタスクになる場合はSQLのバルク・コピーを使用します。一方、「シード」と言えば、これは一度だけのことであれば、データベースでそのまま実行してから、将来の「最初から開始する」ためにバックアップから復元してください。