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