コード例 #1
0
        protected LuaSqlPolicyExecutorInfo RunLua(IDictionary <string, object> parameters,
                                                  ConfigSqlExecuteType exeType,
                                                  IDictionary <string, ISqlConfigPolicy> policies)
        {
            var info = new LuaSqlPolicyExecutorInfo()
            {
                Config       = _sqlConfigMgr.Config,
                DB           = DB,
                SqlInfo      = _sqlInfo,
                SqlName      = SqlName,
                TableInfo    = _tableInfo,
                TableName    = TableName,
                ExecuteType  = exeType,
                PreSqlParams = parameters,
            };

            //lua sql执行前的调用
            _sqlConfigMgr.PolicyMgr.InvokePreExecutePolicyExecutors(policies, info);

            var guid = Guid.NewGuid().ToString();

            _luaSqlParamFuncContainer[guid] = info.LuaSqlParamFuncs;    //设置SqlParams操作相关的函数到容器中
            //调用脚本函数生成sql
            var srtn = _sqlConfigMgr.Config.Run(TableName, SqlName, guid);

            _luaSqlParamFuncContainer.Remove(guid); //脚本运行完成后移除

            CheckSqlExecuteType(srtn.Type, exeType);
            info.LuaRan?.Invoke();            //触发lua运行之后的事件

            info.Sql       = srtn.Sql.Trim(); //sql, 去掉头尾空格
            info.SqlParams = _sqlParamCvt.DictionaryToDBParams(DB, info.PreSqlParams);

            return(info);
        }
コード例 #2
0
 /// <summary>
 /// 将sql的参数模型对象 转换成 sql的参数
 /// </summary>
 /// <param name="db"></param>
 /// <param name="paramsModel">sql的参数模型对象</param>
 /// <param name="ignoreProptNames">sql的参数模型对象中需要忽略的属性名</param>
 /// <returns></returns>
 public static IDataParameter[] ObjectToDBParams(this ISqlParamConverter sqlParamCvt, DbContext db,
                                                 object paramsModel, IEnumerable <string> ignoreProptNames = null)
 {
     if (paramsModel != null)
     {
         return(sqlParamCvt.DictionaryToDBParams(db,
                                                 EFHelper.Services.ObjReflector.GetPublicInstanceProptValues(paramsModel, ignoreProptNames)));
     }
     else
     {
         return(new IDataParameter[0]);
     }
 }
コード例 #3
0
 /// <summary>
 /// 将Dictionary => IDataParameter[] ( SqlParameters)
 /// </summary>
 /// <param name="sqlParamCvt"></param>
 /// <param name="db"></param>
 /// <param name="dictParams"></param>
 /// <returns></returns>
 public static IDataParameter[] DictionaryToDBParamsR(this ISqlParamConverter sqlParamCvt, DbContext db,
                                                      IReadOnlyDictionary <string, object> dictParams)
 {
     return(sqlParamCvt.DictionaryToDBParams(db, dictParams, dictParams?.Count));
 }