entityframework 코드를 먼저 사용하여 링크 테이블에 새 레코드를 추가하려고합니다. 내가 가지고있는 것은 User
과 Role
에 대한 많은 것입니다. 그래서 완벽하게 그들을 제거엔티티 프레임 워크가 많을수록 많은 레코드가 계속 추가됨
//Delete all associated roles for user
var roleUser = db.Users.Include(r => r.Roles).FirstOrDefault(u => u.UserId == user.UserId);
var usersRoles = roleUser.Roles;
usersRoles.ForEach(role => roleUser.Roles.Remove(role));
//add the new roles
roleUser.Roles.AddRange(detachedUser.Roles);
db.SaveChanges();
: 나는이 시나리오는 내가 사용자에 대한 역할을 변경있을 때, 나는 모든 이전 역할을 삭제하고 다음과 같이 새로운 역할을 추가한다는 것입니다. 그러나 새 역할을 추가 할 때 링크 테이블에 추가 할뿐만 아니라 Role
테이블에도 추가합니다. RoleName
없이 완전히 새로운 역할이 추가되었습니다. 어떻게 EF 완전히 새로운 기록을 추가하는 것을 방지 할 그냥 링크 테이블에 레코드를 추가
RoleId;//1 <-- this Id exists in the database already but yet still it creates one instead of a linktable record.
RoleName;//null
: user.Roles
는 다음과 같은 데이터 항목을 포함 할 것인가?
업데이트 : 내가이 일을 결국 : 사용자에게 새 역할을 추가하기 전에 저장
var roleUser = db.Users.Include(r => r.Roles).FirstOrDefault(u => u.UserId == user.UserId);
var roles = db.Roles;
foreach (var role in roles)
{
if (user.Roles.Any(r => r.RoleId == role.RoleId))
{
roleUser.Roles.Add(role);
}
else
{
roleUser.Roles.Remove(role);
}
}
db.SaveChanges();
분명히 해결되었지만 해결할 수없는 것을 이해할 수 없습니다. 새로운 역할을 만들지 못하게하는 부분을 다시 게시하십시오. – Mounhim