我的数据库中有一个规则表。我插入如下规则:
Rule[] rulesToInsert = // some array of rules to insert
using(var db = new MyEntities())
{
foreach(var rule in rulesToInsert)
db.Rules.Add(rule);
db.SaveChanges();
}
当我稍后检索我刚刚添加的规则时,我注意到它们的顺序不同。按照我添加它们的顺序检索它们的最佳方法是什么?每次添加新规则时都应该调用 db.SaveChanges()
吗?或者我应该添加一个名为 SortOrder 的新列吗? 为什么没有按照我添加的顺序添加这些项目?
编辑
id 是一个 guid(字符串),因为一个规则可以有其他规则。换句话说,我正在创建一个树结构。 (规则表本身有一个外键)。当我将主键用作整数并自动递增时它崩溃了,所以我只使用了一个 guid。我想我会添加一个单独的列,称为排序顺序。
最佳答案
表格没有排序顺序(新行不能保证添加到末尾或任何其他位置)。以任何特定顺序检索行的唯一安全方法是使用 Order by
进行查询。
所以是的,您需要添加一个 SortOrder
列。 (可以将其设置为 identity
列。)
关于c# - Entity Framework 确保对象按顺序插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33765969/