我们计划在sql server数据库中使用标识列。目前我们使用guid来生成唯一ID,但事实证明排序是相关的,因此我们考虑切换到标识columsn。
由于排序是相关的,我们希望确保将对象添加到实体上下文的顺序也是它们插入数据库的顺序。这是相关的,因为sql server将为标识列生成值。
这是否由实体框架保证?如果没有,那么为从不同进程更新的数据库生成自己的唯一整数id的有效解决方案是什么。
答案 0 :(得分:1)
我不会依赖于您的记录顺序返回的插入顺序。当然,它大部分时间都可以工作,但如果你需要在某处插入一行怎么办?我想说你最好的办法是添加一个序数列并主动生成每一行的序数,因为你希望它们被退回。
答案 1 :(得分:1)
我只是在这里猜测(尽管它应该很容易测试),但我认为EF不能保证订单。我很确定内部结构是基于一个IEnumerable类型,可能是一个List,它只是在插入过程中枚举的,而枚举就我所知并不能保证每次都以相同的顺序。
我会在数据库表中添加一个专用的“排序顺序”列,然后从那里获取它。