Entity framework Entity Framework 4.1-每次保存后都会复制子对象集合
我对实体框架(EF4.1-CodeFirst)有问题 它基本上是复制子对象 对象模型是作业中的多个任务->任务有一个TaskType,该TaskType有多个状态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;
//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()
)