用ef6.1.3偶然会出现以下问题.
要插入的数据有一列,列名为rowid,计算之后赋值,并插入.
本来的值应该是
flowno rowid itemno
[自增] 1 '11001'
[自增] 2 '12001'
[自增] 3 '42001'
而且在EF.Add方法之前,输出了文本,显示的是
rowid itemno
1 '11001'
2 '12001'
3 '42001'
最后数据库里面的数据却变成了
flowno rowid itemno
1111 1 '12001'
1112 2 '42001'
1110 3 '11001'
这个错误偶然会发生,但是不知道到底是什么原因导致.
rowid 是你自己的编号还是什么。
你的描述里面 3:42001,3:11001.前后不一致啊。
你这个可能的问题是数据库排序规则问题。数据库主键id是那个字段,数据库排序规则是什么
主键是flowno,自增.数据库排序规则是,Chinese_PRC_CI_AS
3那个是手误.
@forhells:
那你更正一下吧,还有
最后数据库里面的数据却变成了
1111 1 '12001'
1112 2 '42001'
1110 3 '11001'
怎么也不会是1111,1112,1110的排序。自增的顺序都乱了
@calvinK: 因为没有排序的情况下,直接查询,结果就这样的.
@calvinK: 其它不出问题的数据.不排序的查询,就是正常的从小到大.只有这种出错的数据,默认查询的顺序会变成这样.
@forhells: 数据库你主键是自增id对不对。默认数据库排序字段就是自增id这个字段。
这种情况下,数据库自增id字段一定是不会乱的。数据的物理顺序一定是 1110,1111,1112
@calvinK: 好吧.这个问题,先不纠结.先考虑一下.rowid变化的问题.
@forhells: 你先吧你的问题重新编辑一下
你的描述里面 3:42001,3:11001.前后不一致啊。
这都是错误的,怎么看是什么地方出问题了呢
这只能说明你修改过ef获取的数据,然后又不小心被ef给savechange了
保存的时候,不会修改ef获取的数据.
@forhells: 也许是你使用了异步的savechange也不好说
把自增列加个索引,或者也放入主键里面试试。
应该还是自己的逻辑问题。
这是一个偶然问题.如果是逻辑问题,那就能重显,现在是没有办法重显.
一直找不到问题的话,我建议从多线程,异步的方面考虑
flowno rowid itemno
1111 1 '12001'
1112 2 '42001'
1110 3 '11001'
你flowno的自增是对的,'11001'是第一个被插入的,紧接着是'12001',最后是'42001',问题是查询的时候出现的,你自增字段的类型是什么?
问题是rowid变了,这个是外面传进来的值.在插入之前,日志里面是正常的.自增字段是int
楼主,我也遇到介个焖题了,你是怎么解决哒?
不晓得是不是版本的问题。实在不行就先nosql,后sql,sql并发不高的情况下,应该不会出此题了。