EF 4.0の上にTrackable Entitiesを使用しています。ToListメソッドはTrackableCollectionには使用できません
すべての従属エンティティを持つエンティティを削除するには、EntityManagerのDeleteメソッドから呼び出されるジェネリックDeleteDependentEntitiesを作成しています。 DeleteDependentEntitiesスキャンは、対象のエンティティセットのすべての子を再帰的にスキャンします(データベース内の関係に設定するCASCADE DELETEに依存しない、またはしたくない)。
一般的なので、プロジェクト全体のすべてのエンティティで使用できるように、私は動的なタイプを使用しています。次のように
方法は次のとおりです。
private void DeleteDependentEntities(dynamic entitySet, dynamic context)
{
if (entitySet != null)
{
foreach (dynamic item in entitySet.ToList())
{
// 1. Scan object for children and delete children
ProcessChildren(item, context);
// 2. Delete this object
context.DeleteObject(item);
}
}
}
それはOKコンパイルしますが、実行時に、私は次のエラーを取得する:
「SLS.AnimalIntakeMgmt.DataTypes.TrackableCollectionは」の定義が含まれていません'ToList'
したがって、型推論は正常に機能しました。 TrackableCollectionはObservableCollectionに基づいており、ObservableCollectionはCollectionに基づいているため、ToList定義の問題は奇妙です。
ループ内でコレクションが変更されるため、foreachループが失敗するため、ToListが必要です。
すべての提案は大歓迎です!
しかし、あなたが正しいです、元のコードは嘘つきです。 –
ヒントのThx Daniel、うまくいきます。以前はジェネリックスで試してみましたが、さらにレベル呼び出しのために型を取得することに問題がありました。 @Ales:あなたの考えを共有するためのthxは、あなたが完璧なコードを書いていることを願っています。 –
@Marc:私の答えを受け入れることを忘れないでください:[回答を受け入れる方法](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) –