在DbContext.SubmitChanges()上保证插入行的顺序吗

时间:2018-08-02 12:33:56

标签: sql-server entity-framework-core

给出具有自动递增PK的记录表

当我将实体添加到DbContext时,如下所示:

using (var dbContext = new MyDbContext())
{
   dbContext.Records.Add(new Record { TypeId = "TYPE1" });
   dbContext.Records.Add(new Record { TypeId = "TYPE2" });
   dbContext.Records.Add(new Record { TypeId = "TYPE3" });
   dbContext.SaveChanges();
}

然后我可以指望记录ID会以与将实体添加到数据库上下文中相同的顺序递增吗?

我想知道以下查询以相同的顺序返回记录。

var records = dbContext.Records.AsNoTracking().OrderBy(r => e.RecordId).ToList();

实体定义如下

public partial class Record
{

    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Column(TypeName = "numeric(10, 0)")]
    public decimal RecordId { get; set; }

    [StringLength(8)]
    public string TypeId { get; set; }

    [ForeignKey(nameof(TypeId))]
    public RecordType Type {get; set;}
}

modelBuilder.Entity<Record>(entity =>
{
    entity.HasOne(record => record.Type)
          .WithMany(type => type.Records)
}

*注意:我在查询中需要按插入事件的顺序获取事件。我有时间戳记,但是如果记录是在单个事务中生成的,则需要额外的排序。

0 个答案:

没有答案