具有新实体的实体树的实体框架数据库更新 - OptimisticCuncurrencyException

时间:2013-01-15 21:05:24

标签: entity-framework-4

我有一个拥有相关实体集合的实体。

我使用相同的密钥和新的相关实体(集合)创建一个新实体。

我已将ned相关实体添加到主实体的集合中,现在我想将所有内容保存到数据库中。

我找到了旧实体及其集合,并将所有东西分开。 比我已经附加新实体和foreach循环 - 集合中的所有相关实体。

当我提交 - context.SaveChanges()时,我得到了 OptimisticCuncurrencyException 存储更新,插入或删除语句会影响意外的行数(0)。自实体加载后,实体可能已被修改或删除。刷新ObjectStateManager条目。

任何想法?

代码:

var old = (from c in context.Category.Include("Products").Where(x => (x.CatID== CatID) select c).FirstOrDefault();
            if (old != null)
            {
                context.Detach(old);
                foreach (Product stwp in old.Products)
                {
                    context.Product.Detach(stwp);
                }
            }

            context.Category.Attach(st);
            context.ObjectStateManager.ChangeObjectState(st, System.Data.EntityState.Modified);
            foreach (Product stwp in st.Products)
            {
                context.Product.Attach(stwp);
                context.ObjectStateManager.ChangeObjectState(stwp, System.Data.EntityState.Modified);

            }
            context.SaveChanges();

1 个答案:

答案 0 :(得分:0)

解决方案是首先删除所有对象然后插入。不是我喜欢的,但没有人提供更好的。