c# - Entity Framework 确保对象按顺序插入

标签 c# sql-server entity-framework-6

我的数据库中有一个规则表。我插入如下规则:

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/

相关文章:

c# - ServiceStack 'Access is denied' 又来了,还有其他问题

sql-server - 如何将 MySQL 转换为 SQL Server 查询以显示正确的时间戳日期?

C# 按名称将图像分配给 ListView 项

c# - 构造函数链接或使用命名/可选参数

c# - 通过代码,我怎样才能让硬盘驱动器进入休眠状态

sql-server - t-sql 替换文本字段

sql-server - SQL Server 2008 'sp_syspolicy_purge_history' 函数

c# - 为什么 LINQ 在我的查询中使用了错误的数据类型,而在 EF 架构中正确声明了它?

javascript - 收到错误 : JavaScript runtime error: Circular reference in value argument not supported

entity-framework - npgsql - 停止使用 'template1' 数据库