EF4 自己追跡エンティティの使用。
ユーザーが所属できる「グループ」のコレクションを持つ「ユーザー」エンティティがあります。グループ ID のリストだけを指定して、このユーザーにいくつかの「グループ」を追加/削除したいと考えています。
public void UserAddGroups(int userID, List<int> groups)
{
var user = Context.Users.Include("Groups").FirstOrDefault(u => u.ID == userID);
if (user != null)
{
// Iterate through the groups that the user already belongs to.
foreach (var group in user.Groups.ToList())
{
// Remove any groups from the user if the new list does not have it.
if (!groups.Contains(group.ID)) user.Groups.Remove(group);
// Else remove it from the list of new groups to avoid duplication.
else groups.Remove(group.ID);
}
// Iterate through the group list and add it to the user's list
// (only a stubby is created)
foreach (var group in groups) user.Groups.Add(new Group { ID = group }.MarkAsUnchanged());
Context.Users.ApplyChanges(user);
Context.SaveChanges();
}
}
このメソッドの結果は、でエラーをスローしますContext.SaveChanges()
。null
エラーは、「グループ」エンティティがプロパティを許可しないことを報告しName
ます。
これは、新しいグループをINSERTING している場合に予想されますが、明らかに私がやろうとしていることではありません。この問題を解決するにはどうすればよいですか?