添加后,DbContext返回错误的ID

时间:2018-01-14 05:07:35

标签: c# entity-framework dbcontext

我有Pin Model

public class Pin
{
    [Key]
    [Column("pin")]
    public int Id { get; set; }

    [StringLength(50, MinimumLength = 1)]
    [Column("desc", TypeName = "varchar")]
    public string Description { get; set; }
}

我有MyDbContext

public class MyDbContext : DbContext
{
    public MyDbContext() : base("DbName")
    {
        Database.SetInitializer<MyDbContext>(new MyDbInitializer());
    }

    public virtual IDbSet<Pin> Pins { get; set; }
}

internal class MyDbInitializer : CreateDatabaseIfNotExists<MyDbContext>
{
    protected override void Seed(MyDbContext context)
    {
        if (context == null)
        {
            throw new ArgumentNullException("context");
        }

        context.SaveChanges();
        return;
    }
}

我正在使用MyDbContext添加引脚

var pin = new Pin{ Description = "Test description" };
using (var context = new MyDbContext())
{
    context.Pins.Add(pin);
    context.SaveChanges();
}

完成SaveChanges后,对象pin已更新Id,例如值为1300但根据数据库最新Id应为1310且1300已经忙碌。 Bug仅出现在一个生产环境中,不可能在本地或临时环境中重现 任何有关方向调查的建议都值得赞赏

1 个答案:

答案 0 :(得分:0)

我会在DBSET上添加pin:

var pin = new Pin{ Description = "Test description" };
using (var context = new MyDbContext())
{
    context.Pins.Add(pin);//here
    context.SaveChanges();
}