Oracle+Entity Framework主键冲突
你好,看了你那个问题之后,不知道解决之后会有什么并发的问题?我找到一个方法:SaveChanges(System.Data.Objects.SaveOptions.Det...
你好,看了你那个问题之后,不知道解决之后会有什么并发的问题?
我找到一个方法:SaveChanges(System.Data.Objects.SaveOptions.DetectChangesBeforeSave),这个属性可以吧藏得objectstateentry相当于忽略掉,这样可以让它按正常流程跑下去,我感觉还是oracle不兼容的问题 展开
我找到一个方法:SaveChanges(System.Data.Objects.SaveOptions.DetectChangesBeforeSave),这个属性可以吧藏得objectstateentry相当于忽略掉,这样可以让它按正常流程跑下去,我感觉还是oracle不兼容的问题 展开
1个回答
展开全部
我遇到过了, 这个问题非常苦逼啊.
我对比了一下 SQL Server 与 Oracle
如果是 SQL Server 的 identity 自增列
插入数据 SaveChanges 以后, 那个自增列的字段, 会自动更新的。
但是如果是 Oracle 的 触发器 + Sequence 的自增
插入数据 SaveChanges 以后, 那个自增列的字段,还是 0
也就是当插入1行数据的时候。SaveChanges 了。
SQL Server 里面, 那个 类的 id 会更新
Oralce 里面, 那个 类的 id 还是0
导致你再插入1行数据的时候。
SQL Server 啥问题没有
而 Oracle 就会抱 主键冲突 (其实这里都还没有插入数据库, 是 Entity Framework 检测到 主键冲突了, 于是不让你插入了)
我当时只好找个表来存储序列号,处理起来,也是很麻烦。
我对比了一下 SQL Server 与 Oracle
如果是 SQL Server 的 identity 自增列
插入数据 SaveChanges 以后, 那个自增列的字段, 会自动更新的。
但是如果是 Oracle 的 触发器 + Sequence 的自增
插入数据 SaveChanges 以后, 那个自增列的字段,还是 0
也就是当插入1行数据的时候。SaveChanges 了。
SQL Server 里面, 那个 类的 id 会更新
Oralce 里面, 那个 类的 id 还是0
导致你再插入1行数据的时候。
SQL Server 啥问题没有
而 Oracle 就会抱 主键冲突 (其实这里都还没有插入数据库, 是 Entity Framework 检测到 主键冲突了, 于是不让你插入了)
我当时只好找个表来存储序列号,处理起来,也是很麻烦。
追问
只有这一种方法么?为什么会出现这种情况?oracle不是兼容么,这个好麻烦,回答你问题那个做法可行么?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询