0

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

我创建了一个具有相同键的新实体和新的相关实体(集合)。

我已将 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();
4

1 回答 1

0

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

于 2013-01-20T13:42:59.757 回答