2011-01-06 4 views
0

예 : 제품 엔티티의를 추적하지 않고 태그 포함로드 :이 것을EF4 POCO 관련 기관없이 ObjectContext는에 법인을 연결

repository.Product 
    .Include("Tag") 
    .Where(p => p.ProductID == 1) 
    .Execute(MergeOption.NoTracking); 

주의점 대다 관계; 제품에는 여러 태그가있을 수 있으며 태그는 여러 제품과 연관 될 수 있습니다.

다른 곳에서 제품 엔티티에 대한 변경 사항을 저장하고 관련 태그 또는이 태그와의 관계 변경 사항을 저장하지 않고 저장하려고합니다.

의미는, 이러한 변화도 저장 될 수

  • 이 태그는 제품
  • 태그가 제품 태그는 수정 된
  • 추가 된 제거 된 (예를 들어 이름

그래서 내가 어떻게 든 새로운 ObjectContext는에 에만 제품을 첨부하여 변경 사항을 저장할 수 있다고 생각했다) 변경되었습니다. 그러나 어떤 이유로 전체 컨텍스트가 아니라 개체 컨텍스트에 단일 엔터티를 연결하는 방법을 알 수 없습니다.

물론 그래프를 첨부하고 문제의 제품을 제외한 다른 모든 요소를 ​​수동으로 분리 할 수는 있지만 이는 끔찍한 해결책이며 다른 것을 찾으려고합니다.

답변

1

복제본을 첨부하고 변경 사항을 저장하면 복제본을 만들 수 있습니다 (딥 클론이 아님)! 원본 개체 그래프는 분리 된 상태로 유지됩니다. 동시 처리에 타임 스탬프와 같은 것을 사용하는 경우에만 문제가 될 수 있습니다. 복제본에서 원래의 엔티티로 새로운 타임 스탬프를 복사해야합니다. 그렇지 않으면 원래 엔티티를 다시 저장할 수 없습니다.

+0

제안 해 주셔서 감사합니다. 그게 내가 더 나은 대안이 부족하게 될지도 모른다. – bernhof

+0

당신이 '복제'라고 말할 때, 내가 모르는 복제 기능의 기존 구현이나 '집에서 양조하는'방법을 언급하고 있습니까? – bernhof

+1

복제는 기본적으로 제공되지 않습니다. ICloneable 인터페이스가 있지만 구현해야합니다. –