0
나는 이것이 이전에 묻혔다는 것을 알 수 있습니다. 어쩌면 나는 정확하게 검색하지 않을 것이지만 그 답을 찾지 못한다. EF 관계가 링크 대신에 새로운 레코드를 추가합니다.
var userRepo = new UserRepository();
var user = new User {Name = "Bob"};
userRepo.Save(user);
var roleRepo = new RoleRepository();
var role = new Role {Name = "My role"};
roleRepo.Save(role);
user.Roles.Add(role); //I expect this to link user to role, but it adds a second role
userRepo.Save(user);
은 어쩌면 문제는 내 저장소에 있지만 나는 의심 : 콜린 지적
public void Save(Role role)
{
if (role.ID == 0)
context.Roles.Add(role);
else
{
var currentRole = context.Roles.Find(role.ID);
context.Entry(currentRole).CurrentValues.SetValues(role);
}
context.SaveChanges();
}
검색하는 동안'DbSet.Add'가 전체 객체 그래프의 상태를'Added'로 변경한다는 것을 읽어야합니다. –
@GertArnold 그러면 user.Roles.Add (role); 줄을 바꿔야합니다; 롤은 컬렉션이므로 추가하는 유일한 방법일까요? – Mathieu
여기에 좋은 설명이 있습니다. http://msdn.microsoft.com/en-us/magazine/dn166926.aspx. 또한 리포지토리가 컨텍스트를 공유하는 경우 슬픔이 줄어들 것입니다. 작업 단위를 추가하는 것이 좋습니다. – Colin