2011-01-28 5 views
0

엔티티 프레임 워크에서 여러 컨텍스트를 회전하지 않도록하는 방법 : 오류에다음 코드를 실행하려고, 엔티티 프레임 워크에서

 using (MyEntities ctx = new myEntities()) 
     { 
      Entity.Customers.Build buildId = new ctx.Build(); 
      buildId.CustomerService = customerService; 
      buildId.datCreatedDate = DateTime.Now; 
      buildId.strBuildSchema = schema; 
      buildId.Status = "Success"; 
      ctx.AddToBuilds(buildId); 
      ctx.SaveChanges(); 
     } 

결과 "엔티티 객체가 IEntityChangeTracker의 여러 인스턴스에서 참조 할 수 없습니다."

내가 알 수있는 한, 문제는 AddToBuilds() 문을 수행하는 컨텍스트와 다른 Entity Framework 컨텍스트의 새 인스턴스에서 생성하는 Build 개체라는 것입니다.

그러나이 문제를 해결하는 방법을 배울 수는 없습니다. 위의 코드에서 Entity 컨텍스트 개체 (즉, ctx)의 인스턴스화에서 새로운 빌드 직접을 만들 수없는 것 같습니다. 이 작업을 수행 할 수있는 방법이 있습니까 아니면 다른 확실한 해결 방법이 누락 되었습니까?

환호, 매트

답변

0

문제는 당신이 ctx에 연결되어 다른 기업, buildId와 위의 코드 (customerService?)에 표시되지 하나의 컨텍스트에 부착 된 개체를 연결하고 있다는 것입니다 . 그러지 마. 한 번에 하나의 컨텍스트를 사용하십시오.

0

"customerService"(또는 아마도 '스키마')는 다른 EntityTracker에 속합니다. 이 제거하는 가장 간단한 방법은 (주 여기를 CustomerService의 클래스 이름에 대한 가정을 만드는) CustomerService를로드 코드 에 다음 코드 줄을 추가하는 것입니다 : 코드의

ctx.CustomerService.MergeOptions = MergeOptions.NoTracking; 

이 줄 컨텍스트 "고객 서비스 개체를 변경하지 않으므로 추적하지 않아도됩니다."

관련 문제