Esempio n. 1
0
        /// <summary>
        /// 异步执行
        /// </summary>
        /// <typeparam name="TResult">结果类型</typeparam>
        /// <param name="connectionId">连接ID</param>
        /// <param name="isClose">是否关闭</param>
        /// <param name="dbConnection">数据库连接</param>
        /// <param name="func">函数</param>
        /// <param name="mode">访问模式</param>
        /// <returns>结果任务</returns>
        protected async Task <TResult> ExecAsync <TResult>(string connectionId, bool isClose, IDbConnection dbConnection, Func <IDbTransaction, TResult> func, AccessMode mode = AccessMode.MASTER)
        {
            var dbTrans = DbConnectionManager.GetDbTransaction(connectionId, this, mode);

            return(await Task.Run <TResult>(() =>
            {
                TResult result = func(dbTrans);
                if (isClose)
                {
                    DbConnectionManager.Release(connectionId, dbConnection);
                }

                return result;
            }));
        }
Esempio n. 2
0
 /// <summary>
 /// 根据连接ID获取数据库事务
 /// </summary>
 /// <param name="connectionId">连接ID</param>
 /// <param name="accessMode">访问模式</param>
 /// <returns>数据库事务</returns>
 public IDbTransaction GetDbTransaction(string connectionId, AccessMode accessMode = AccessMode.MASTER) => DbConnectionManager.GetDbTransaction(connectionId, this, accessMode);