C# Entity Framework savechangesasync сохраняет новую запись, но возвращает 0
Entity Framework: 6.1.3.
У меня есть функция, которая читает простую таблицу для записи и либо обновляет ее, либо сначала создает новую сущность. В любом случае он вызывает AddOrUpdate и SaveChangesAsync. Эта функция работала довольно долго без каких-либо видимых проблем.
В моей текущей ситуации, однако, я получаю возвращаемое значение 0 от SaveChangesAsync. У меня есть точка останова перед сохранением и я проверил, что запись не существует. Я перебираю код и, как и ожидалось, была создана новая сущность. Любопытно, что запись теперь находится в таблице по желанию. Если я понимаю документацию, 0 должно указывать, что ничего не было выписано.
Я не использую транзакции для этой операции. Другие операции с базой данных, включая запись, уже произошли бы в контексте до вызова этой функции, однако все они должны были быть зафиксированы.
Итак, как я могу получить возврат 0 и при этом что-то записать?
Вот немного уменьшенный фрагмент кода:
var settings = OrganizationDb.Settings;
var setting = await settings.FirstOrDefaultAsync(x => x.KeyName == key).ConfigureAwait(false);
if (setting == null)
{
setting = new Setting()
{
KeyName = key,
};
}
setting.Value = value;
settings.AddOrUpdate(setting);
if (await OrganizationDb.SaveChangesAsync().ConfigureAwait(false) == 0)
{
//// error handling - record not written out.
}