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

时间:2015-03-04 15:01:53

标签: mysql entity-framework mysql.data

我使用EF6和MySQL.Data v6.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中复制这种行为,但是当我转向生产时,就会发生这种情况。我知道生产数据库处理特定表中的大量数据,如果这很重要的话。

0 个答案:

没有答案