2011-08-27 4 views
3

EF 4.1을 사용하여 다음과 같은 모델을 만들려고하는데이 예외 ("컬렉션이 수정되었으므로 열거 연산이 실행되지 않을 수 있음")을 지나칠 수 없습니다.EF 코드의 자체 참조 모델 처음에 4.1에서 '컬렉션이 수정되었습니다.'예외가 발생했습니다.

모델 :

public class Workflow 
{ 
    public List<WorkflowStage> Stages { get; set; } 
} 

public class WorkflowStage 
{ 
    public virtual List<WorkflowNextStage> WorkflowNextStages { get; set; } 
} 

public abstract class WorkflowNextStage 
{ 
    public virtual WorkflowStage NextStage { get; set; } 
} 

public class SuccessStage : WorkflowNextStage 
{ 
} 

public class FailureStage : WorkflowNextStage 
{ 
} 

구성 :

modelBuilder.Entity<WorkflowStage>() 
      .HasMany(x => x.WorkflowNextStages) 
      .WithRequired() 
      .Map(m => m.MapKey("CurrentStageId")); 

    modelBuilder.Entity<WorkflowNextStage>() 
      .HasRequired(x => x.NextStage) 
      .WithMany() 
      .Map(x => x.MapKey("NextStageId")) 
      .WillCascadeOnDelete(false); 

실패 코드 : 다른 무대 위의 '새 SuccessStage'을 설정

using (var ctx = new SBContext()) 
     { 
      var workflow = new Workflow(); 
      var stage = new WorkflowStage(); 
      stage.WorkflowNextStages = new List<WorkflowNextStage> 
              { 
               new SuccessStage() {NextStage = stage}, 
               new FailureStage() {NextStage = stage} 
              }; 

      workflow.Stages = new List<WorkflowStage> {stage}; 

      ctx.Workflows.Add(workflow); 
      ctx.SaveChanges(); 
     } 

잘 작동합니다.

나는이 문제에 다소 혼란 스럽다. 아무도 아이디어가 없습니까?

+0

도와 주시면 전체 스택 추적을 붙여 넣으십시오. 도움이 될 수 있습니다. 귀하가받는 전체 오류는 무엇이며 어떤 행에서 오류가 발생합니까? – kingdango

답변

0

수정중인 컬렉션을 반복하는 foreach 루프가 있습니까? 이 경우이 오류가 발생할 수 있습니다.