实体框架:插入时出错

时间:2015-03-30 19:19:02

标签: .net vb.net entity-framework visual-studio-2013

我在使用EF尝试插入时遇到问题。情况如下:

  1. 当我创建一个新的注册表时,我做了一个普通的插入,其中PK从SQL接收到MAX函数的返回
  2. 然后我在没有EF
  3. 的情况下从数据库中删除了这一行
  4. 最后,我尝试使用EF插入新的注册表,就像我在第1步中所做的那样
  5. 然后我从Visual Studio获取此消息:

      

    已成功提交对数据库的更改,但更新对象上下文时发生错误。 ObjectContext可能处于不一致状态。内部异常消息:AcceptChanges无法继续,因为对象的键值与ObjectStateManager中的另一个对象冲突。在调用AcceptChanges

    之前,请确保键值是唯一的

    为了说明我的问题,我做了this small video

    我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

最初检索实体时尝试使用AsNoTracking

using (var context = new MyContext())
{
    var myEntities = context.MyEntities.AsNoTracking();

    // then you can manually delete a row in the database
    // and insert it again here in code

    context.SaveChanges();
}

这样,ObjectContext不会缓存实体。请注意,这将影响代码中依赖于跟踪机制的区域(如果有)。