using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Transactions;
namespace FreeSql.Site.UI.Common
{
public class AutoException
{
///
/// 执行方法外壳,包括异常抓取,固定格式返回
///
///
///
///
///
public static ServiceResult Excute(
Action> action, bool isTransaction = false)
{
TransactionScope ts = null;
if (isTransaction) ts = new TransactionScope();
ServiceResult result = new ServiceResult() { Status = EnumServiceResult.Success.GetHashCode() };
try
{
action.Invoke(result);
if (isTransaction) ts.Complete();
}
catch (Exception ex)
{
result.Msg = ex.Message;
result.Status = EnumServiceResult.Failure.GetHashCode();
}
finally
{
if (isTransaction) ts.Dispose();
}
return result;
}
///
/// 规范接口调用方法
///
/// 返回值参数
/// 执行方法内容
/// 是否启用事务
///
public static ServiceResult Execute(Action action, bool isTransaction = false)
{
TransactionScope ts = null;
if (isTransaction) ts = new TransactionScope();
ServiceResult result = new ServiceResult() { Status = EnumServiceResult.Success.GetHashCode(), Msg = "保存成功" };
try
{
action.Invoke(result);
if (result.Status == EnumServiceResult.Success.GetHashCode())
{
if (isTransaction) ts.Complete();
}
}
catch (Exception ex)
{
result.Msg = ex.Message;
result.Status = EnumServiceResult.Failure.GetHashCode();
}
finally
{
if (isTransaction) ts.Dispose();
}
return result;
}
}
}