ANK*_*KIT 6 c# orm entity-framework code-first
我需要在单个请求中删除并添加具有相同主键值的实体,有人可以建议我解决方案吗?
下面是我给出错误的示例代码:违反PRIMARY KEY约束'PK_Table'.无法在对象'dbo.Table'中插入重复键.
context.Set<Entity>().Attach(existingEntityObj);
Entry(existingEntityObj).State = EntityState.Deleted;
context.Set<Entity>().Add(newEntityObj);
context.Entry<Entity>(newEntityObj).State = EntityState.Added;
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
假设两个对象(existingEntityObj和newEntityObj)在主键属性中具有相同的值.
提前致谢!!
您需要执行两次SaveChanges()调用才能使其正常工作.这里的问题是,虽然看起来你首先删除记录然后添加一个新记录,但框架实际上是先插入插入.
原因是因为实体框架不能让您精确控制操作发生的订单.因此,最好的办法是将两者包装在单独的TransactionScope中,这样可以控制正在发生的各个事务.
你可以在这里阅读更多内容:https://blogs.msdn.microsoft.com/alexj/2009/01/11/savechangesfalse/
| 归档时间: |
|
| 查看次数: |
5049 次 |
| 最近记录: |