0

EF5 には、ユーザーとロールの 2 つのエンティティがあります。

ユーザーとロールの間には多対多の関係があります。

関係を設定する UserRoles データベースのエンティティがありません。

ユーザーがいて、データベースからロードせずにロールを削除したいと考えています。

  Context context = new Context();
  User user = context.Users.First(x => x.Id == 4);
  user.Roles = new List<Role>();
  Role role = new Role { Id = 20 };
  context.Roles.Attach(role);
  user.Roles.Remove(role);
  context.SaveChanges();

エラーは発生しませんが、役割は削除されません。

理由はありますか?

4

1 に答える 1

1

roleから削除しようとしていますがuser.Rolesroleこのリストには含まれていないため、何も起こりません。

ロールを削除したときに変更検出がオブジェクトグラフの変更を認識できるように、ユーザーとロールを一度にコンテキストにアタッチする必要があると思います。

Context context = new Context();

User user = new User { Id = 4 };
user.Roles = new List<Role>();
Role role = new Role { Id = 20 };
user.Roles.Add(role)

context.Users.Attach(user);

user.Roles.Remove(role);

context.SaveChanges();
于 2012-12-16T00:38:31.913 に答える