zoukankan      html  css  js  c++  java
  • EF SaveChanges(),报错 更新条目出错,查看EF详细错误信息,以及如何清除掉EF上下文中错误的信息

    背景:从博客园采集文章的时候,我先采集MVC分类下的文章,再采集首页推荐的文章,难免会有重复的信息,所以在数据库的约束里面对文章的标题做了重复约束,那么在EF保存的时候,我试用了try catch 来接住是不是 重复保存出错了

    for(这外面有个循环,不停的读取博客园首页推荐的文章)
    {
    db.Blog.AddObject(blog);
    try 
    { 
    db.SaveChanges(); 
    } 
    catch (Exception e) 
    {
     throw e.InnerException; 
    } 
    }
    当有重复项的时候,错误信息被接住,但是当我循环到下一条文章的时候,即使这个新的文章在数据库中并不存在,但是保存依然出错,后面才理解,为什么新文章不存在重复项,但是为什么还是报数据重复的错误呢?
    原因是之前,我们上面  的  db.Blog.AddObject(blog);  这个是将一个实体,保存到EF的上下文中,然后后面执行Save的时候,虽然catch住了错误信息,但是刚才添加进来的重复的实体信息,依旧在EF的上下文里面,下个循环到SaveChanges的时候,错误的实体依旧被提交了上去,所以导致依旧抱重复错误,解决方法就是catch错误后,把错误的实体,从EF的上下文中删除即可。
    正确的解决方法如下:
    db.Blog.AddObject(blog);
         try
          {
              db.SaveChanges();
          }
          catch (Exception e)
          {
             // throw e.InnerException;
             db.Blog.DeleteObject(blog);
          }
  • 相关阅读:
    vs编译错误error C2059 由extern "C"导致的错误处理
    原生JS:响应式轮播图
    JSP用户关注取关实现
    JSP和AJAX实现登录注册
    MySQL常用命令
    offsetWidth/getBoundingRect()/scrollWidth/client用法总结
    画廊相册—原生JavaScript实现
    《JavaScript DOM 编程艺术》读书笔记
    天猫网页前端实现
    Docker安装和配置(链接集合)
  • 原文地址:https://www.cnblogs.com/joeylee/p/3128357.html
Copyright © 2011-2022 走看看