Ejemplo n.º 1
0
        /// <summary>
        /// 开启带一个参数的事务
        /// </summary>
        /// <param name="db">The database.</param>
        /// <param name="action">The action.</param>
        /// <param name="parameter">The parameter.</param>
        public static void Invoke(this Database db, Action <TransactionHost, object> action, object parameter)
        {
            using (var host = new TransactionHost(db))
            {
                action?.Invoke(host, parameter);

                host.Commit();
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 封装数据库对象api,内部调用事务
        /// </summary>
        /// <param name="database">数据库对象</param>
        /// <param name="action">运行函数</param>
        public static void Invoke(this Database database, Action <TransactionHost> action)
        {
            using (var host = new TransactionHost(database))
            {
                action?.Invoke(host);

                host.Commit();
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 开启一个带一个参数、一个返回值的事务
        /// </summary>
        /// <typeparam name="TResult">The type of the result.</typeparam>
        /// <param name="db">The database.</param>
        /// <param name="func">The function.</param>
        /// <param name="parameter">The parameter.</param>
        /// <returns></returns>
        public static TResult Invoke <TResult>(this Database db, Func <TransactionHost, object, TResult> func, object parameter)
        {
            using (var host = new TransactionHost(db))
            {
                var result = func.Invoke(host, parameter);

                host.Commit();

                return(result);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 封装文档对象api并锁住文档,内部调用事务
        /// </summary>
        /// <param name="document">文档对象</param>
        /// <param name="action">运行函数</param>
        public static void Invoke(this Document document, Action <TransactionHost> action)
        {
            using (document.LockDocument())
            {
                var database = document.Database;

                using (var host = new TransactionHost(database))
                {
                    action?.Invoke(host);

                    host.Commit();
                }
            }
        }