저는 EF를 처음 사용하고 있으며 자녀들에게 약간의 문제가 있습니다. 엔티티 객체의 인스턴스를 저장할 수는 있지만 엔티티와 관련된 자식을 저장하려고하면 나에게 불어납니다. 엔티티 프레임 워크 저장 자식
현재 작업중인 모델입니다.
public bool UpdateSelectedUser(user selectedUser)
{
nsdc_supplyEntities ctx = new nsdc_supplyEntities();
try
{
user editUser = ctx.users
.Include(ug => ug.network_group)
.Where(u => u.id == selectedUser.id).FirstOrDefault();
editUser.full_name = selectedUser.full_name;
editUser.office_phone = selectedUser.office_phone;
editUser.cell_phone = selectedUser.cell_phone;
editUser.home_phone = selectedUser.home_phone;
editUser.text_address = selectedUser.text_address;
editUser.email = selectedUser.email;
foreach (network_group group in selectedUser.network_group)
{
editUser.network_group.Add(group);
}
ctx.SaveChanges();
}
catch (Exception e)
{
}
}
코드를 사용하고 있습니다. editUser.network_group.Add(group);
행에서 "두 객체 간의 관계가 다른 ObjectContext 객체에 연결되어있어 정의 할 수 없습니다"라는 오류가 발생합니다. Google과 SO에 대한 잠재적 인 답변을 조금 파고 들었지만 지금까지 문제를 해결하는 방법을 찾지 못했습니다.
-UPDATE- 포주의 그룹이 수주의 제안을 반영하도록 변경되었습니다. 그것은 더 멀리 함께있어하지만 또 다른 문제를 노출 :
foreach (network_group group in selectedUser.network_group)
{
var groupEntity = new network_group
{
id = group.id,
full_name = group.full_name,
distribution_list_email = group.distribution_list_email
};
if (editUser.network_group.Where(g => g.id == groupEntity.id).Count() < 1)
{
editUser.network_group.Add(groupEntity);
}
}
오류가 발생했습니다 고유 한 제약이 있습니다. 일부 중복 된 항목을 삽입하는 것으로 나타났습니다. 따라서 사용자가 이미 그룹을 가지고 있다면 추가하지 않습니다. 그러나 이제는 사용자와 현재 연결되지 않은 그룹 만 추가하기 때문에 고유 제약 조건 오류가 발생합니다. 내가 발견 한 것은 그룹 테이블에 새 그룹을 추가 한 다음 사용자와 연관시키는 것입니다. 새 그룹을 만들지 않고 기존 그룹을 사용자에게 추가하고 싶습니다. 가까이와! :)
첫 번째 문장에 대해서는 parenting.stackexchange.com을 참조하십시오. –