Сохраняю. 1 обновляется, 2 нет. Воспроизвести получается только на проде, 1 из 20 раз.
SaveChanges возвращает 2.
Вопрос.
Вот это 2 - это количество изменений записей в самом скл сервере, верно?
Т.е. мы не провалились по конкаренси и прочему. Или эта цифра не гарантирует ничего?
Я так понимаю самый надежный вариант найти косяк - это профайлить?
всмысле вместо 2 бывает 1?
сейв всегда возвращает 2, но иногда в базе 1 запись из 2х не обновляется
А обновляемые данные точно отличаются от уже записанных в бд?
да, я логирую обьект которому вызываю апдейт
попробуй логировать запрос, который еф выполняет в этой ситуации. может отсюда легче будет копнуть
ты сразу два объекта за одну транзакцию пытаешься обновить?
да хоть десять. какая разница
а есть способ логировать конкретный сейв, а не включать логгер для всего?
ну ты можешь просмотреть список ентитей на изменение. и если там есть нужные тебе - включить логирование.
тебе сюда походу https://docs.microsoft.com/en-us/ef/core/querying/filters
я бы просто нужную для лога сущность унаследовал от пустого интерфейса. типа if(entity.IsAssignableFrom(typeof(IMustBeLogged)) { logger.Write() }
это все задается на уровне конфига контекста, верно?
на уровне описания сущности.
Спасибо, помогло. Иногда рядом паралельный реквест обновлял ту же запись. Причем брал запись до того сейва и потом старыми данными перекрывал.
👍👍 хорошо, что поймал...
Обсуждают сегодня