/// <summary> /// 保存配置实例。 /// </summary> /// <param name="site">当前配置实例。</param> /// <returns>返回数据结果。</returns> public virtual async Task <DataResult> SaveAsync(SiteBase site) { var adapter = site.ToStore(); if (adapter.SiteId > 0) { return(DataResult.FromResult(await _sdb.UpdateAsync(adapter), DataAction.Updated)); } if (await IsDuplicatedAsync(site)) { return(DataResult.FromResult(await _sdb.UpdateAsync(x => x.SiteKey == adapter.SiteKey, new { adapter.SiteName, adapter.UpdatedDate, adapter.SettingValue }), DataAction.Updated)); } return(DataResult.FromResult(await _sdb.BeginTransactionAsync(async db => { if (!await db.CreateAsync(adapter)) { return false; } site.SiteId = adapter.SiteId; foreach (var handler in _handlers) { if (!await handler.OnCreateAsync(db, site)) { return false; } } return true; }), DataAction.Created)); }
/// <summary> /// 保存配置实例。 /// </summary> /// <param name="site">当前配置实例。</param> /// <returns>返回数据结果。</returns> public virtual DataResult Save(SiteBase site) { var adapter = site.ToStore(); if (adapter.SiteId > 0) { return(DataResult.FromResult(_sdb.Update(adapter), DataAction.Updated)); } if (IsDuplicated(site)) { return(DataResult.FromResult(_sdb.Update(x => x.SiteKey == adapter.SiteKey, new { adapter.SiteName, adapter.UpdatedDate, adapter.SettingValue }), DataAction.Updated)); } return(DataResult.FromResult(_sdb.BeginTransaction(db => { if (!db.Create(adapter)) { return false; } site.SiteId = adapter.SiteId; foreach (var handler in _handlers) { if (!handler.OnCreate(db, site)) { return false; } } return true; }), DataAction.Created)); }
/// <summary> /// 判断是否已经存在,唯一键重复。 /// </summary> /// <param name="site">当前网站实例。</param> /// <returns>返回判断结果。</returns> public virtual Task <bool> IsDuplicatedAsync(SiteBase site) { return(_sdb.AnyAsync(x => x.SiteId != site.SiteId && x.SiteKey == site.SiteKey)); }
/// <summary> /// 判断是否已经存在,唯一键重复。 /// </summary> /// <param name="site">当前网站实例。</param> /// <returns>返回判断结果。</returns> public virtual bool IsDuplicated(SiteBase site) { return(_sdb.Any(x => x.SiteId != site.SiteId && x.SiteKey == site.SiteKey)); }