c#entity framework savechangesasync保存新记录但返回0

时间:2017-02-16 20:23:26

标签: entity-framework savechanges

实体框架:6.1.3。

我有一个函数,它为记录读取一个简单的表,并更新它或首先创建一个新实体。无论哪种方式,它都会调用AddOrUpdate和SaveChangesAsync。这个功能已经工作了很长时间没有任何明显的问题。

但是,在我目前的情况下,我从SaveChangesAsync获得的返回值为0。我在保存之前有一个断点并验证记录不存在。我逐步完成代码,并按预期创建了一个新实体。奇怪的是,记录现在按照需要在表中。如果我理解文档,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 个答案:

没有答案