Example #1
0
        /// <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));
        }
Example #2
0
        /// <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));
        }
Example #3
0
 /// <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));
 }
Example #4
0
 /// <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));
 }