2010-07-15 1 views
2

EF에 새로운 문제가 있습니다.Entityframework 4 : 부모 컬렉션에서 하위 엔터티를 제거 할 때 ForeignKey 문제가 발생했습니다.

오케이, 그래서 관련 테이블 (일대 다 관계)을 가진 엔티티가 있습니다. 엔티티는 관련 테이블에서 하위 오브젝트 콜렉션을 보유합니다. 관련 컬렉션에서 객체를 제거하고 싶지만 하위 테이블에서 객체를 제거하고 싶지 않습니다.

그러나 <entity>.myRelatedChildTable.Remove(childEntity)을 호출 한 다음 _context.SaveChanges()을 호출하면 ForeignKey Constraints에 대한 예외가 발생합니다. 이제 _context.DeleteObject()으로 전화를 걸어 _context.SaveChanges()으로 연락하면 문제가 없습니다. 하지만 이제는 하위 엔티티도 없으므로 db에서 삭제됩니다. 여기

는 예외의 텍스트입니다 : 작업이 실패 : 하나 또는 외래 키 속성의 이상이 아닌 Null을 허용하기 때문에 관계는 변경 할 수 없습니다. 관계가 변경된 인 경우 관련 foreign-key 속성은 null 값으로 설정됩니다. 외래 키가 null 값을 지원하지 않으면 새로운 관계 을 정의해야하며 외래 키 속성에 null이 아닌 다른 값을 할당해야합니다. 그렇지 않으면 관련이없는 개체를 삭제해야합니다.

누구나 아이디어/제안을 어떻게 해결할 수 있습니까?

+1

예외가 정확한 문제를 설명하는 것처럼 들립니다 ... 외래 키가있는 SQL 테이블에서 키의 null 값을 허용합니까? 그렇지 않으면 EF는 참조 된 행을 예외적으로 삭제할 수 없으므로 예외가됩니다. – sipwiz

+0

null을 허용하지 않습니다. 문제가 있습니다 (다른 사용자가 db를 소유하고 있으며 변경할 수 없습니다). 나는 컬렉션에서 그것을 제거해야하지만 DB를 승/O를 예외가 발생합니다. 나는 내가 뭘 잘못하고 있는지 알아야 해. –

답변

1

기본적으로 EF를 데이터베이스에서 분리하려고하는 것처럼 들립니다. 불행히도 변경 사항을 저장하면 데이터베이스에 변경 사항이 반영되므로 분명히 원하지 않습니다. SaveChanges를 호출하고 컬렉션 작업을 계속할 수는 없습니다. EF는 귀하의 삭제를 설명하고 그 정보를 반환하지 않습니다. 마지막에 변경 사항을 무시하고 계속 진행할 수 있습니다.

자식을 삭제하지 않고 항목을 실제로 삭제하려면 현재 스키마에서 삭제할 수 없습니다. DB에 null을 허용해야합니다.

+0

그래, 기본적으로 데이터베이스에서 데이터를 제거하지 않고 부모 컬렉션에서 제거하고 싶습니다. 그래서 내가 행을 유지할 수 있고 더 이상 다른 테이블의 행과 관련이 없습니다. –

+0

나는 현재 스키마 허가가 그렇게 생각하지 않는다 ... 나는 비슷한 상황에 처해있다. – harsimranb

관련 문제