EF4.1 の使用中にメモリの問題が発生しました。問題は主に次の状況で発生します。1 つ以上のコースに参加できる学生がいて、複数のユーザーが同じコースに参加できるとします。だから、私は次のようなものを持っています:
Student * < - > 1-* Course
BD に 2 人の生徒と 1 つのコースがあるとします。このような:
Ana は英語コースに参加します Bob は英語コースに参加します
私のオブジェクトグラフは次のようなものです:
Ana
\
English Course
/
Bob
これで問題ありません。
これを保存すると、student テーブルに 2 行、courses テーブルに 1 行が保存されます。
問題は、このデータを取得しようとするときです。
次のようなことをすると:
var students = (from s in students
select s).Include("Courses");
これは結果のグラフです:
Ana -> English Course
Bob -> English Course
オブジェクトが複製されます。このツリーの深さがはるかに大きく、何千人もの学生と何千ものコースがあり、同じコースに何百人もの学生が参加している状況を想像してみてください。
このクエリのメモリ使用量は非常に大きくなります。この参照の問題を解決するにはどうすればよいですか?