/// <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(); } }
/// <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(); } }
/// <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); } }
/// <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(); } } }