1

で簡単にconsole app書いてC#ありVS.NET 2012ます。私はEntity Framework 5(モデルファースト)で単純なデータベースを使用しています。CustomerEmailの2つのテーブルがあります。すべての電子メールレコードには、顧客レコードへの参照があります。

顧客と電子メールオブジェクトを作成し、EFコンテキスト内のコレクションに保存します。1000個のレコードが作成された後、コンテキストで変更の保存を呼び出します。1000のバッチはますます遅くなり、1000の場合は1分から始まり、その後9000番目のレコードまでに、1000のバッチが完了するまでに4分かかります。

私はCSV一度に1行ずつファイルからデータを読み取り、各行で単純な分割を行ってから、単純なオブジェクトを作成しています。

私の質問は、これがEF5データベースにないのか、indexそれともデータベースにないのかということです。他の前処理は行っていません。私はを使用してSQL Server 1012います。

4

2 に答える 2

2

保存DbContextされた後でも、すべてのオブジェクトを追跡します。のサイズが、DbContextアプリケーションの速度を低下させている原因である可能性があります。

を破棄して、 1000回の挿入後DbContextに新しいものを作成することをお勧めします。DbContext

于 2012-11-16T10:05:37.940 に答える
0

これを使用してオブジェクトの追跡を無効にすることができます

context.Configuration.AutoDetectChangesEnabled = false;
于 2012-11-16T12:56:51.193 に答える