Драйвер MySQL для EF6 возвращает неверный идентификатор после вставки
Я использую EF6 и MySQL.Data v6.9.5 для подключения к базе данных MySQL. Когда я вставляю запись, вызываю db.SaveChanges() и ссылаюсь на столбец идентификатора записи, я получаю то, что похоже на действительный идентификатор, но по какой-то причине идентификатор изменится в базе данных.
Образец кода
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
поле идентификатора, например, будет иметь значение 128990. Но когда я позже осмотрю таблицу MySQL напрямую, оно будет иметь другое значение идентификатора, которое, кажется, всегда на 100-200 меньше, например 12880.
Я понятия не имею, что здесь происходит, потому что я не могу воспроизвести это поведение в нашей среде разработки и тестирования, но когда я перехожу к производству, это происходит. Я знаю, что производственная БД обрабатывает большой объем данных в конкретной таблице, если это вообще имеет значение.