/// <summary>
 /// SqlScalar
 /// </summary>
 /// <param name="configExecutor"></param>
 /// <param name="parameters">sql的参数</param>
 /// <returns></returns>
 public static object Scalar(this ILuaSqlConfigExecutor configExecutor,
                             params IDataParameter[] parameters)
 {
     if (parameters?.Length > 0)
     {
         return(configExecutor.ScalarUseDict(parameters.ToDictionary(l => l.ParameterName, l => l.Value)));
     }
     else
     {
         return(configExecutor.ScalarUseDict(null));
     }
 }
 /// <summary>
 /// SqlScalar
 /// </summary>
 /// <param name="configExecutor"></param>
 /// <param name="parameters">sql的参数</param>
 /// <param name="policies">策略对象集合</param>
 /// <returns></returns>
 public static object Scalar(this ILuaSqlConfigExecutor configExecutor,
                             IDataParameter[] parameters,
                             IDictionary <string, ISqlConfigPolicy> policies)
 {
     if (parameters?.Length > 0)
     {
         return(configExecutor.ScalarUseDict(parameters.ToDictionary(l => l.ParameterName, l => l.Value), policies));
     }
     else
     {
         return(configExecutor.ScalarUseDict(null, policies));
     }
 }
 /// <summary>
 /// SqlScalar
 /// </summary>
 /// <param name="configExecutor"></param>
 /// <param name="parameters">sql的参数</param>
 /// <returns></returns>
 public static T Scalar <T>(this ILuaSqlConfigExecutor configExecutor,
                            params IDataParameter[] parameters)
     where T : struct
 {
     if (parameters?.Length > 0)
     {
         return((T)typeof(T).ChangeValueType(
                    configExecutor.ScalarUseDict(parameters.ToDictionary(l => l.ParameterName, l => l.Value))));
     }
     else
     {
         return((T)typeof(T).ChangeValueType(configExecutor.ScalarUseDict(null)));
     }
 }
 /// <summary>
 /// SqlScalar
 /// </summary>
 /// <param name="configExecutor"></param>
 /// <param name="parameters">sql的参数</param>
 /// <param name="policies">策略对象集合</param>
 /// <returns></returns>
 public static T ScalarUseDict <T>(this ILuaSqlConfigExecutor configExecutor,
                                   IDictionary <string, object> parameters,
                                   IDictionary <string, ISqlConfigPolicy> policies)
     where T : struct
 {
     return((T)typeof(T).ChangeValueType(configExecutor.ScalarUseDict(parameters, policies)));
 }
 /// <summary>
 /// SqlScalar
 /// </summary>
 /// <param name="configExecutor"></param>
 /// <param name="paramsModel">sql的参数模型对象</param>
 /// <param name="ignoreProptsForParamModel">sql的参数模型对象中需要忽略的属性名</param>
 /// <param name="policies">策略对象集合</param>
 /// <returns></returns>
 public static object ScalarUseModel(this ILuaSqlConfigExecutor configExecutor, object paramsModel,
                                     IEnumerable <string> ignoreProptsForParamModel,
                                     IDictionary <string, ISqlConfigPolicy> policies)
 {
     return(configExecutor.ScalarUseDict(
                EFHelper.Services.ObjReflector.GetPublicInstanceProptValues(paramsModel,
                                                                            ignoreProptsForParamModel), policies));
 }
 /// <summary>
 /// SqlScalar
 /// </summary>
 /// <param name="configExecutor"></param>
 /// <param name="paramsModel">sql的参数模型对象</param>
 /// <param name="ignoreProptsForParamModel">sql的参数模型对象中需要忽略的属性名</param>
 /// <returns></returns>
 public static T ScalarUseModel <T>(this ILuaSqlConfigExecutor configExecutor, object paramsModel,
                                    params string[] ignoreProptsForParamModel)
     where T : struct
 {
     return((T)typeof(T).ChangeValueType(
                configExecutor.ScalarUseDict(
                    EFHelper.Services.ObjReflector.GetPublicInstanceProptValues(paramsModel,
                                                                                ignoreProptsForParamModel))));
 }
 /// <summary>
 /// SqlScalar
 /// </summary>
 /// <param name="configExecutor"></param>
 /// <param name="paramsModel">sql的参数模型对象</param>
 /// <param name="ignoreProptsForParamModel">sql的参数模型对象中需要忽略的属性名</param>
 /// <param name="policies">策略对象集合</param>
 /// <returns></returns>
 public static T ScalarUseModel <T>(this ILuaSqlConfigExecutor configExecutor, object paramsModel,
                                    IEnumerable <string> ignoreProptsForParamModel,
                                    IDictionary <string, ISqlConfigPolicy> policies)
     where T : struct
 {
     return((T)typeof(T).ChangeValueType(
                configExecutor.ScalarUseDict(
                    EFHelper.Services.ObjReflector.GetPublicInstanceProptValues(paramsModel,
                                                                                ignoreProptsForParamModel), policies)));
 }
 /// <summary>
 /// SqlScalar
 /// </summary>
 /// <param name="configExecutor"></param>
 /// <param name="paramsModel">sql的参数模型对象</param>
 /// <param name="ignoreProptsForParamModel">sql的参数模型对象中需要忽略的属性名</param>
 /// <returns></returns>
 public static object ScalarUseModel(this ILuaSqlConfigExecutor configExecutor, object paramsModel,
                                     params string[] ignoreProptsForParamModel)
 {
     return(configExecutor.ScalarUseDict(
                EFHelper.Services.ObjReflector.GetPublicInstanceProptValues(paramsModel, ignoreProptsForParamModel)));
 }