1

我们计划在我们的 sql server 数据库中使用标识列。目前我们正在使用 guids 来生成唯一的 id,但事实证明,排序是相关的,所以我们考虑切换到身份列。

由于排序是相关的,我们希望确保我们将对象添加到实体上下文的顺序也是它们插入数据库的顺序。这是相关的,因为 sql server 将为标识列生成值。

这是由实体框架保证的吗?如果不是,那么为从不同进程更新的数据库生成您自己的唯一整数 ID 的有效解决方案是什么。

4

2 回答 2

1

我不会依赖插入顺序作为您返回的记录的顺序。当然,它在大多数情况下都会起作用,但是如果您需要在某处插入一行怎么办?我会说你最好的选择是添加一个序数列并积极为每一行生成序数,因为你希望它们被返回。

于 2009-05-18T14:28:05.500 回答
1

我只是在这里猜测(虽然它应该很容易测试),但我认为 EF 不能保证顺序。我很确定内部结构基于一个 IEnumerable 类型,可能是一个 List,它只是在插入过程中被枚举,并且据我所知,枚举不能保证每次都以相同的顺序排列。

相反,我会在您的数据库表中添加一个专用的“排序顺序”列,并在那里获取它。

于 2009-05-18T14:31:53.497 回答