2017-05-15 9 views
1

削除する必要のある組織のリストがあり、新しいセットが追加されています。私は{「コレクションが変更された。列挙操作が実行されないことがあります。」}、私は例外を取得し終わるエンティティフレームワークEFでレコードを削除する際の問題

var user = db.Users.Find(model.Id);  
foreach (var item in user.Organizations) 
{ 
    user.Organizations.Remove(item); 
} 

var userOrgs = db.Organizations.Where(o => model.Organizations.Contains(o.ID)).ToList(); 
foreach (var item in userOrgs) 
{ 
    user.Organizations.Add(item); 
} 
db.SaveChanges(); 

を使用しています、私は2番目の項目を削除しようとします。別の方法がありますか?

+0

使用 'userOrgs'代わりに' user.Organization'のforeachループで。私はそれが元の意図だったと思います。 – icebat

+0

@icebat私の質問が訂正されました。 –

+0

それはまだ同じです。最初のループで 'user.Organizations'を反復し、同時に変更します。 – icebat

答えて

3

は、あなたの最初のforeachでToListメソッドを使用してみてください:

var user = db.Users.Find(model.Id);  
foreach (var item in user.Organizations.ToList()) 
{ 
    user.Organizations.Remove(item); 
} 
+0

このコードは基本的にすべてのユーザーの組織を削除します。それは望ましい動作ですが、Clear()を使用するのは簡単ではありませんか? – icebat

関連する問題