解决方案 »

  1.   

    这应该不是数据库方面的问题
    可以转到.net版块问问
      

  2.   


    我做的是mysql、sqlserver、oracle三数据库转换,模型是mysql的,两外两个我是只添加了ssdl。但是做到oracle的时候有一个主键的值一直都是0,另外两个就不会出现这种情况。
      

  3.   

    我也是同样的问题,EF 连接 oracle
    对数据库所做的更改已成功提交,但在更新对象上下文时出错。此 ObjectContext 可能处于不一致状态。内部异常消息: AcceptChanges 无法继续,因为该对象的键值与 ObjectStateManager 中的另一个对象冲突。请在调用 AcceptChanges 之前,确保键值是唯一的。
      

  4.   


    是不是有一个字段总是一个值,值不会变才导致这样的。你可以吧savechange()的属性改一下,就是把存储之后重置的属性去掉,但是还是会出现问题,你可以试一下。之后我是在oracle数据库中添加了触发器,才能存储数据,但是由于重置取消了,可能会导致你修改数据的时候还是会出错。不过我看官方说oracle6有一个方法可以解决,但是我用的是vs2010用不了oracle6,这个问题一直也没解决。
      

  5.   


    是不是有一个字段总是一个值,值不会变才导致这样的。你可以吧savechange()的属性改一下,就是把存储之后重置的属性去掉,但是还是会出现问题,你可以试一下。之后我是在oracle数据库中添加了触发器,才能存储数据,但是由于重置取消了,可能会导致你修改数据的时候还是会出错。不过我看官方说oracle6有一个方法可以解决,但是我用的是vs2010用不了oracle6,这个问题一直也没解决。不好意思,在想别的事就大意了,应该是EF6   我看了一下EF6  有个方法貌似可以解决,但是我用的vs2010,用不了EF6,所以只是觉得那个方法可行。
      

  6.   

     public bool CreateRoleObj(List<U_ROLEOBJECT> roleobject)
            {
                if (roleobject != null)
                {
                    //添加实体
                    foreach (U_ROLEOBJECT roleobj in roleobject)
                    {
                        DBManager.U_ROLEOBJECT.AddObject(roleobj);
                    }                //保存,返回成功行数
                    int c = DBManager.SaveChanges();// 这里报错
                    //判断
                    if (c > 0)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                else
                {
                    return false;
                }
            }
      

  7.   


    savechange()  改成SaveChanges(SaveOptions.DetectChangesBeforeSave)  试一下
      

  8.   

    还有几是EF 连接oracle的时候,为什么主键id总是获取不到啊?
      

  9.   


    我也不太清楚,但是我觉得不应该获取不到吧,我做的是3数据库支持,mysql和sqlserver都挺好的,就是到了oracle就这德行,你可以看savechange那地方你的主键的值,那个值一直不会变,所以就会报错,但是如果你用这种方法,数据保存到数据库以后就不会重置实体的状态,我这么做之后无法更新,不知道你碰到这个问题了没有。
      

  10.   


    我是吧所有需要的操作全用触发器完成的,而且oracle的插入式触发器没有after,这样的话触发器也不太方便,而且还会占一定的内存,如果你那个东西不太大,也可以用触发器来弄,理论上来说速度会减慢,但是我用的时候速度还可以,没有想象的慢,可以用,就是会占一些内存。
      

  11.   


    之前我提这个问题的时候,也不知道为啥,也没人能回答我,只好自己研究了,研究好长时间才发现是savechange它本身的问题,但是这个我觉得不是根本问题,EF6还是挺好的,兼容了好多,但是我用不了,唉,怪我太菜了,都没人愿意理我。
      

  12.   

    我没有遇见这个问题,我是第一次用oracle数据库开发,代码是用sql版本改的oracle版。
      

  13.   


    oracle  不是特别喜欢,官方说是兼容,其实就是某些方面兼容,可是还是有好多用户,唉