2009-05-18 33 views
1

我们计划在我们的sql server数据库中使用标识列。目前我们使用GUID来生成唯一的ID,但事实证明,排序是相关的,所以我们考虑切换到身份columsn。实体框架在插入数据库时​​是否保留排序?

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

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

回答

1

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

我会将一个专门的“排序顺序”列添加到您的数据库表中,并将其转化为表单。

1

我不会依赖插入顺序来返回记录的顺序。当然,它大部分时间都会工作,但是如果你需要在某处插入一行呢?我会说你最好的选择就是添加一个序号列,并且为每一行积极地生成序号,因为你希望它们被返回。

+0

我打算添加一个标识列来显式设置排序。然而,我们想要放在那里的顺序是到达顺序。我正在寻找一种解决方案,可能会避免查询数据库中最后一个添加的行,以便为新行导出新的ID。 – 2009-05-18 17:33:39