Entity framework Entity Framework 4.1-每次保存后都会复制子对象集合

Entity framework Entity Framework 4.1-每次保存后都会复制子对象集合,entity-framework,entity-framework-4,ef-code-first,Entity Framework,Entity Framework 4,Ef Code First,我对实体框架(EF4.1-CodeFirst)有问题 它基本上是复制子对象 对象模型是作业中的多个任务->任务有一个TaskType,该TaskType有多个状态 //tried this but it errors foreach (var status in task.TaskType.Statuses) { context.Entry(status).State = EntityState.Unchanged;

我对实体框架(EF4.1-CodeFirst)有问题

它基本上是复制子对象

对象模型是作业中的多个任务->任务有一个TaskType,该TaskType有多个状态

        //tried this but it errors
        foreach (var status in task.TaskType.Statuses)
        {
            context.Entry(status).State = EntityState.Unchanged;
        }
        ////
起初,它是在存储上复制任务类型

然而,在我添加这个之后,它停止了复制TaskType

context.Entry(task.TaskType).State = EntityState.Unchanged;
所以我尝试了这个状态

        //tried this but it errors
        foreach (var status in task.TaskType.Statuses)
        {
            context.Entry(status).State = EntityState.Unchanged;
        }
        ////
但它有以下错误

Store update、insert或delete语句影响了意外的行数(0)。自加载实体后,实体可能已被修改或删除。请刷新ObjectStateManager条目

这是完整的代码。。。(为了可读性,一些get代码被删减)

有人能帮忙吗

using(var context = new JobContext())
{
    var job = //Get with Includes;
    context.Jobs.Attach(job); 
    // can be omitted if "Get with Includes" happens in the same context

    context.TaskTypes.Attach(task.TaskType);
    // attaches TaskType and all Statuses -> State is Unchanged

    job.Tasks.Add(task);
    // A new task will be created after SaveChanges. If you don't want that
    // replace Attach(task.TaskType) above by Attach(task)

    context.SaveChanges();
}
顺便说一下,您不需要加载
Include
。您可以在不包含的情况下加载(然后创建一个空集合
job.Tasks=new List()