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();
}
잘 작동합니다.
나는이 문제에 다소 혼란 스럽다. 아무도 아이디어가 없습니까?
도와 주시면 전체 스택 추적을 붙여 넣으십시오. 도움이 될 수 있습니다. 귀하가받는 전체 오류는 무엇이며 어떤 행에서 오류가 발생합니까? – kingdango