EF Core DbSet.Add或DbSet.Update

时间:2016-11-12 00:06:50

标签: c# .net entity-framework entity-framework-core .net-core

我正在尝试制作一个小型Web应用程序,它将某些内容存储在数据库中。但是,我需要检查数据库中是否已有条目。如果是这样,请更新它。如果没有,请添加它。我该怎么做呢?

我目前的做法是:

public void Set(string key, string value)
{
    var setting = this.settingsContext.Settings.Where(s => s.Key == key).FirstOrDefault();

    if (setting == null)
    {
        this.settingsContext.Add(new SettingModel { Key = key, Value = value });
    }
    else
    {
        setting.Value = value;
        this.settingsContext.Update(setting);
    }
}

使用事务时,代码变得非常笨拙:

public void Set(string key, string value)
{
    using (var transaction = settingsContext.Database.BeginTransaction())
    {
        try
        {
            var setting = this.settingsContext.Settings.Where(s => s.Key == key).First();

            if (setting == null)
            {
                this.settingsContext.Add(new SettingModel { Key = key, Value = value });
            }
            else
            {
                setting.Value = value;
                this.settingsContext.Update(setting);
            }
            settingsContext.Database.CommitTransaction();
        }
        catch (Exception)
        {
            settingsContext.Database.RollbackTransaction();
        }
    }
}

稍微笨拙的参数是因为我正在实现IConfigurationProvider接口,我无能为力。

0 个答案:

没有答案