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.
}

0 ответов

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