Драйвер 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.

Я понятия не имею, что здесь происходит, потому что я не могу воспроизвести это поведение в нашей среде разработки и тестирования, но когда я перехожу к производству, это происходит. Я знаю, что производственная БД обрабатывает большой объем данных в конкретной таблице, если это вообще имеет значение.

0 ответов

Другие вопросы по тегам