向EF 上下文中添加完 对象数据之后,SaveChange(),这个时候如果报错(比如主键重复),
如何处理这些已经添加到上下文中的对象数据呢?当我修改完数据,再次提交的时候,上次添加的数据还存在在EF上下文中,
所以还是会报错?请问该如何解决这个问题呢?

解决方案 »

  1.   

    主键重复不可能存到数据库中的。你可以用Refreash从数据库中刷新数据,那些添加到DataContext但是没有保存到数据库中的数据就没有了。
      

  2.   

    谢谢楼上 ,我修改一下代码我也知道主键重复存不进去,但不知道如何处理已经添加到它里面的数据。我看一下Refresh。
      

  3.   

    不过我是在错误捕获里面 如何去 Refresh 这个ObjectContext呢?它还需要指定 entity 参数。而我是把多个entity 加入之后,才SaveChange()的。
      

  4.   

    你可以看一下  SaveChanges 有重载的方法http://www.cnblogs.com/aisini/archive/2011/03/25/1994487.html
      

  5.   

    多谢楼上关注
    我的问题是,SaveChanges() 时报错,有内部事务嘛,所以数据库里的数据没有问题。就是没有真正的插入新数据, 可是我在代码中 Add 到上下文中的对象都还保存在上下文中。所以,当我再次提交新的正确数据时,上下文中就包含了两份数据了。
      

  6.   

    问题解决了多谢各位关注我的错误是因为我把获取的EF上下文对象设置成了 static 的,所以早没发现。