gpt4 book ai didi

ef-code-first - EF Code First 4.1 中的自引用模型抛出 'Collection was modified' 异常

转载 作者:行者123 更新时间:2023-12-05 01:16:55 24 4
gpt4 key购买 nike

我正在尝试使用 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);

失败代码:

    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();
}

将上面的“新成功阶段”设置为不同的阶段就可以了。

我对此有点困惑...有人有什么想法吗?

最佳答案

您是否有一个 foreach 循环来遍历正在修改的集合?如果是这样,这可能会导致此错误。

关于ef-code-first - EF Code First 4.1 中的自引用模型抛出 'Collection was modified' 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7215806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com