EF6的MySQL驱动程序在插入后返回错误的标识

EF6的MySQL驱动程序在插入后返回错误的标识,mysql,entity-framework,mysql.data,Mysql,Entity Framework,Mysql.data,我正在使用EF6和MySQL.dataV6.9.5连接到MySQL数据库。当我插入一条记录时,调用db.SaveChanges()并引用该记录的ID列,我会得到一个看起来有效的ID,但由于某种原因,该ID将在数据库中更改 示例代码 var res = db.SampleRegs.Add(sample); try { db.SaveChanges(); //now, to fire a trigger, we need

我正在使用EF6和MySQL.dataV6.9.5连接到MySQL数据库。当我插入一条记录时,调用db.SaveChanges()并引用该记录的ID列,我会得到一个看起来有效的ID,但由于某种原因,该ID将在数据库中更改

示例代码

var res = db.SampleRegs.Add(sample);
        try
        {
            db.SaveChanges();
            //now, to fire a trigger, we need to UPDATE the table and set Saved = 10; (trigger fires on UPDATE when Saved = 10).
            db.Entry(res).State = System.Data.Entity.EntityState.Modified;
            db.SaveChanges();
            //Now set Saved = 20 to fire another trigger
            System.Threading.Thread.Sleep(100);//because reasons
            res.Saved = sbyte.Parse("20");
            db.Entry(res).State = System.Data.Entity.EntityState.Modified;
            db.SaveChanges();
        }
当我在
res
上设置断点时,ID字段的值将为128990。但是当我稍后直接检查MySQL表时,它将有一个不同的ID值,它似乎总是小于100到200,例如12880


我不知道这里发生了什么,因为我无法在我们的开发和测试环境db中复制这种行为,但当我转到生产环境时,这种情况就会发生。我知道生产数据库处理特定表中的大量数据,如果这很重要的话。

这个触发器是用来做什么的?这听起来像是数据库生成了一个ID值,而EF查询了错误的生成ID,因为生成和查询ID不会发生在一个作用域/会话中。触发器会将记录添加到其他表中。我插入的记录没有标准化,因此有400个字段需要迁移到其他相关表中(我不是架构师)。