实体框架: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.
}