我正在尝试制作一个小型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
接口,我无能为力。