Entity Framework を SQL Server Compact Edition で使用すると、メモリ リークが発生します。私の状況:
約600MByteのファイルがあります。私はそれを 1 行ずつ読み、エンティティ クラスを作成し、それを SQL Server CE データベースに追加しました。それによってメモリは非常に急速に成長しています。Gen 0 コレクション カウンターと Gen 2 ヒープ サイズが非常に急速に増加しています (Process Explorer からの情報)。私が正しく理解していれば、Gen 2ヒープは大きなオブジェクト用です。私のエンティティクラスは大きなオブジェクトだと思います。したがって、Entity Framework はオブジェクトを保存し、解放しません。私はすでにそれらを切り離して GC.Collect(2) を呼び出そうとしていますが、役に立ちません。
最初に行を読みました。次に、行を解析した後にオブジェクトを作成します。次に、DB に追加します。ここに私のデータベースコードがあります:
DBEntities dbConnection = new DBEntities();
dbConnection.My_Table.AddObject(MyObjectCreatedFromTheLine);
dbConnection.SaveChanges();
// dbConnection.Detach(MyObjectCreatedFromTheLine);
// dbConnection.Dispose();
MyObjectCreatedFromTheLine = null;
dbConnection = null;
また、作成されたエンティティ クラス ( MyObjectCreatedFromTheLine
) が に属していると読みましたDbContext
。したがって、すべての行に対してこのコードを呼び出し、毎回新しいコンテキストを作成します。
私は何を間違っていますか?