多対多の関係を持つSQL Serverのデータモデルがあります。エンティティフレームワークの多対多関係が無限ループを引き起こす
public class Class1
{
public ICollection<Class2> Class2s {get;set;}
}
public class Class2
{
public ICollection<Class1> Class1s {get;set;}
}
今の問題は、いくつかの状況(すべてではない)で、これは無限ループを引き起こすように見えるということです:ときにEntity Frameworkのは、モデルのこの関係は、このような双方向リストの参照を作成することによってことを行います。私は、コレクションの1つにAdd()
を呼び出すと、両方のクラスのプロパティのgetメソッド間でフレームワークが前後にループし、効果的にすべてのCPUを奪い、アプリケーションをフリーズするケースがあります。
誰もこのような経験はありますか?それが起こらないように私は何ができますか?
PS:私はRab Hallett's Mocking Framework generatorを使用してコードを生成しています。これが適切かどうかはわかりません。
アップデート1:それは間違いなく、モックフレームワークに関連しています
アップデート2:それは無限ループではないのですが、それは両方のテーブルからすべての要素にアクセスする - おそらくのn * mはアクセスしてしまいます。私はそれをもっと見て戻ってくる
それは間違いなく、関連ある:
をすることができますそれを修正するにはハレットのモックフレームワークにこの動作は、標準の.NET Entity Frameworkコード生成では再現できません – Nilzor
Nilzor、これを確認できますか?模擬フレームワークなしで同じケースをコンテキスト上で実行することは可能でしょうか? –
上記のコメントは確認です。私は実際に、嘲笑の枠組みなしで文脈で同じケースを実行しています。編集:私の問題を解決するには、a)バグを修正するか、回避するか、またはb)EFのための別のモック可能オブジェクトジェネレータを見つけなければならない – Nilzor