protected override void Dispose(ParameterStd p, DataCollection d)
        {
            var wp = (EWRAParameter)p;

            wp.Dispose();
            d.Dispose();
        }
        protected override void Run(ParameterStd p, DataCollection d)
        {
            var rp = (RazorParam)p;
            var rd = (RazorData)d;

            rd.RenderText = renderer.RenderViewToString(excuteFilePath, rp.ViewPath, rp.CurrentHttpContext, rp.Model, rp.ViewList).GetAwaiter().GetResult();;
        }
예제 #3
0
 /// <summary>
 /// 等待异步操作完成,执行过程中有异常则会引发异常的抛出
 /// </summary>
 /// <param name="p"></param>
 /// <param name="data"></param>
 public void WaitMe(ParameterStd p, DataCollection data)
 {
     if (p.ExtentionObj.async != null && p.ExtentionObj.async is Task)
     {
         ((Task)p.ExtentionObj.async).Wait();
     }
 }
        public override bool CheckParametersAndConfig(ParameterStd p, DataCollection d)
        {
            if (!(p is RazorParam))
            {
                return(false);
            }
            if (!(d is RazorData))
            {
                return(false);
            }

            var rp = (RazorParam)p;

            if (string.IsNullOrEmpty(rp.ViewPath))
            {
                GlobalCommon.Logger.WriteLog(Base.Constants.LoggerLevel.ERROR, "Razor引擎缺少ViewPath参数");
                return(false);
            }
            if (rp.CurrentHttpContext == null)
            {
                GlobalCommon.Logger.WriteLog(Base.Constants.LoggerLevel.ERROR, "Razor引擎缺少HttpContext参数");
                return(false);
            }

            return(true);
        }
        protected override void Run(ParameterStd p, DataCollection d)
        {
            var tp = (TParameter)p;
            var td = (TData)d;

            _context = tp.CurrentHttpContext;

            //var startdt = DateTime.Now;
            //GlobalCommon.Logger.WriteLog(LoggerLevel.DEBUG, string.Format("Before {0} Process Request Memory:{1}", _requesturi.AbsoluteUri, ComFunc.GetProcessUsedMemory()));
            var dt      = DateTime.Now;
            var dtstart = DateTime.Now;

            //进行参数初始化
            BeforeProcess(tp, td);
            //GlobalCommon.Logger.WriteLog(LoggerLevel.DEBUG, $"excute:{_context.Request.Method} \"{tp.RequestUri}\" BeforeProcess cast time:{(DateTime.Now - dt).TotalMilliseconds}ms ");
            dt = DateTime.Now;
            //业务逻辑操作
            InvokeAction(tp, td);
            //GlobalCommon.Logger.WriteLog(LoggerLevel.DEBUG, $"excute:{_context.Request.Method} \"{tp.RequestUri}\" InvokeAction cast time:{(DateTime.Now - dt).TotalMilliseconds}ms "); dt = DateTime.Now;
            //session和cookie等的设置必须在response回写之前处理,否则会报异常
            AfterProcess(tp, td);
            //GlobalCommon.Logger.WriteLog(LoggerLevel.DEBUG, $"excute:{_context.Request.Method} \"{tp.RequestUri}\" AfterProcess cast time:{(DateTime.Now - dt).TotalMilliseconds}ms ");
            //dt = DateTime.Now;
            //进行response的回写
            SetResponseContent(tp, td);
            //GlobalCommon.Logger.WriteLog(LoggerLevel.DEBUG, $"excute:{_context.Request.Method} \"{tp.RequestUri}\" SetResponseContent cast time:{(DateTime.Now - dt).TotalMilliseconds}ms "); dt = DateTime.Now;
            //收尾作业
            FinishedProcess(tp, td);
            //GlobalCommon.Logger.WriteLog(LoggerLevel.DEBUG, $"excute:{_context.Request.Method} \"{tp.RequestUri}\" FinishedProcess cast time:{(DateTime.Now - dt).TotalMilliseconds}ms "); dt = DateTime.Now;

            GlobalCommon.Logger.WriteLog(LoggerLevel.DEBUG, $"excute:{_context.Request.Method} \"{tp.RequestUri}\" cast time:{(DateTime.Now - dtstart).TotalMilliseconds}ms ");

            //GlobalCommon.Logger.WriteLog(LoggerLevel.DEBUG, string.Format("After {0} Process Request Memory:{1}", _requesturi.AbsoluteUri, ComFunc.GetProcessUsedMemory()));
            //GlobalCommon.Logger.WriteLog(LoggerLevel.DEBUG, string.Format("Time cost {0}ms", (DateTime.Now - startdt).TotalMilliseconds));
        }
        protected override void Run(ParameterStd p, DataCollection d)
        {
            var tp = (TagParameter)p;
            var td = (TagData)d;

            Init(tp, td);

            DoProcess(tp, td);
        }
예제 #7
0
        protected override void Run(ParameterStd p, DataCollection d)
        {
            var tp = (TParameter)p;
            var td = (TData)d;

            var socket = CurrentContext.WebSockets.AcceptWebSocketAsync().GetAwaiter().GetResult();

            ProcessWebSocketAsync(socket);
        }
        protected override void OnError(Exception ex, ParameterStd p, DataCollection d)
        {
            var tp = (TParameter)p;
            var td = (TData)d;

            tp.Resources.RollbackTransaction(tp.CurrentTransToken);

            throw new Exception($"{this.GetType().Name}处理出错:" + ex.Message, ex.InnerException == null?ex:ex.InnerException);
        }
 protected override void OnError(Exception ex, ParameterStd p, DataCollection d)
 {
     p.Resources.RollbackTransaction(p.CurrentTransToken);
     GlobalCommon.Logger.WriteLog(Base.Constants.LoggerLevel.ERROR, ex.Message + "\n" + ex.StackTrace);
     if (ex.InnerException != null)
     {
         GlobalCommon.Logger.WriteLog(Base.Constants.LoggerLevel.ERROR, ex.InnerException.Message + "\n" + ex.InnerException.StackTrace);
     }
 }
        protected override void Run(ParameterStd p, DataCollection d)
        {
            var tp = (TParameter)p;
            var td = (TData)d;

            InvokeBusiness(tp, td);
            AfterProcess(tp, td);

            tp.Resources.CommitTransaction(tp.CurrentTransToken);
        }
예제 #11
0
        protected override void Dispose(ParameterStd p, DataCollection d)
        {
            var gbp = (GoBusiParameter)p;
            var gbd = (GoBusiData)d;

            gbp.WebParam = null;
            gbd.WebData  = null;
            gbp.Dispose();
            gbd.Dispose();
        }
        protected override void Run(ParameterStd p, DataCollection d)
        {
            var tp = (TParameter)p;
            var td = (TData)d;

            BeforeProcess(tp, td);
            InvokeAction(tp, td);
            AfterProcess(tp, td);
            SetResponseContent(tp, td);
            FinishedProcess(tp, td);
        }
예제 #13
0
 public void StepStart(ParameterStd p, DataCollection d)
 {
     try
     {
         Run(p, d);
     }
     catch (Exception ex)
     {
         OnError(ex, p, d);
     }
 }
예제 #14
0
        public bool CallModule(ParameterStd p, DataCollection data)
        {
            if (_module == null)
            {
                LoadModule();
            }

            _module.StepStart(p, data);

            return(true);
        }
예제 #15
0
        /// <summary>
        /// 执行异步操作结束操作
        /// 等待作业处理完成,如果执行的过程中有异常,则会抛出异常
        /// </summary>
        /// <param name="p"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public bool EndCallModule(ParameterStd p, DataCollection data)
        {
            if (p.ExtentionObj.async != null && p.ExtentionObj.async is Task)
            {
                ((Task)p.ExtentionObj.async).Wait();
                if (((Task)p.ExtentionObj.async).Exception != null)
                {
                    throw ((Task)p.ExtentionObj.async).Exception;
                }
            }

            AfterProcess(p, data);
            return(true);
        }
예제 #16
0
        /// <summary>
        /// 执行异步操作,在该模式下,参数集会复制使其线程独占,数据集则采用线程共享模式
        /// 异步操作处理时,不提供中断操作
        /// </summary>
        /// <param name="p"></param>
        /// <param name="data"></param>
        /// <param name="callback"></param>
        /// <returns></returns>
        public bool BeginCallModule(ParameterStd p, DataCollection data, Action <ParameterStd, DataCollection> callback)
        {
            var task = Task.Run(() =>
            {
                var m = GetModule(p, data);
                m.StepStart(p, data);
                if (callback != null)
                {
                    callback.Invoke(p, data);
                }
            });

            p.ExtentionObj.async = task;
            return(true);
        }
        public override bool CheckParametersAndConfig(ParameterStd p, DataCollection d)
        {
            if (!(p is TParameter))
            {
                return(false);
            }
            if (!(d is TData))
            {
                return(false);
            }

            var tp = (TParameter)p;
            var td = (TData)d;

            return(true);
        }
예제 #18
0
        /// <summary>
        /// 同步调用一个模块
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="p"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public static bool Call <T>(ParameterStd p, DataCollection data) where T : IModularProxy
        {
            bool rtn = false;
            T    t   = default(T);

            try
            {
                t   = (T)Activator.CreateInstance(typeof(T), true);
                rtn = t.CallModule(p, data);
            }
            catch (Exception ex)
            {
                t.OnError(ex, p, data);
            }
            return(rtn);
        }
예제 #19
0
        protected override void Dispose(ParameterStd p, DataCollection d)
        {
            if (p == null)
            {
                return;
            }

            var rp = (RazorParam)p;

            rp.Resources.Dispose();
            rp.CurrentTransToken.Release();
            rp.TransTokenList.Clear();
            rp.ViewPath           = null;
            rp.CurrentHttpContext = null;
            rp.ViewList           = null;
            rp.Model = null;

            GC.Collect();
        }
        public override bool CheckParametersAndConfig(ParameterStd p, DataCollection d)
        {
            if (!(p is TParameter))
            {
                return(false);
            }
            if (!(d is TData))
            {
                return(false);
            }

            var rp = (TParameter)p;

            if (rp.CurrentHttpContext == null)
            {
                return(false);
            }

            return(true);
        }
        public override bool CheckParametersAndConfig(ParameterStd p, DataCollection d)
        {
            if (!(p is HttpParameter))
            {
                return(false);
            }
            if (!(d is ResponseObject))
            {
                return(false);
            }

            var hp = (HttpParameter)p;

            if (hp.ToUrl == "")
            {
                return(false);
            }

            return(true);
        }
예제 #22
0
        public DataCollection DoOperate(ParameterStd p)
        {
            string        flag   = p.GetValue <string>("_unit_action_flag_");
            UnitParameter up     = (UnitParameter)p;
            T             t      = (T)Activator.CreateInstance(typeof(T), true);
            var           sqlobj = t.GetSqlFunc(flag)(up);

            if (!(sqlobj is FrameDLRObject))
            {
                throw new TypeRequiredException("需要的动态数据对象类型应该为FrameDLRObject");
            }
            IDBAccessInfo          dba = up.Dao;
            DBOParameterCollection dbc = up.SPParameter;
            UnitDataCollection     rtn = new UnitDataCollection();

            if (dba is ADBAccess)
            {
                bool             isrturnds = sqlobj.isreturnds != null ? sqlobj.isreturnds : false;
                DBDataCollection dbrtn     = ((ADBAccess)dba).ExcuteProcedure(ComFunc.nvl(sqlobj.spname), isrturnds, ref dbc);
                if (dbrtn.IsSuccess)
                {
                    foreach (string s in dbrtn.Keys)
                    {
                        if (dbrtn[s] is DataSetStd)
                        {
                            rtn.QueryDatas = dbrtn.ReturnDataSet;
                        }
                        else
                        {
                            rtn.SetValue(s, dbrtn[s]);
                        }
                    }
                }
            }
            return(rtn);
        }
예제 #23
0
        protected override void OnError(Exception ex, ParameterStd p, DataCollection d)
        {
            var wp = (WebParameter)p;
            var wd = (GoData)d;

            GlobalCommon.ExceptionProcessor.ProcessException(this, ex, p, d);
            string errorCode = "E-" + DateTime.Now.ToString("yyyyMMddHHmmssfff");
            string errlog    = "";

            if (ex is HostJsException)
            {
                var jex = (HostJsException)ex;
                if (ex.InnerException != null)
                {
                    if (ex.InnerException is HostJsException)
                    {
                        var ijex = (HostJsException)ex.InnerException;
                        errlog = string.Format("错误编号:{0},\n{1}\n{2}\n出错代码行数{3}\n出错代码列数{4}\n出错代码位置{5}\nInnerException:{6}\n{7}\n出错代码行数{8}\n出错代码列数{9}\n出错代码位置{10}", errorCode, ex.Message, ex.StackTrace,
                                               jex.Line, jex.Column, jex.SourceCode.Replace("\"", "'"),
                                               ex.InnerException.Message, ex.InnerException.StackTrace,
                                               ijex.Line, ijex.Column, ijex.SourceCode.Replace("\"", "'"));
                    }
                    else
                    {
                        errlog = string.Format("错误编号:{0},\n{1}\n{2}\n出错代码行数{3}\n出错代码列数{4}\n出错代码位置{5}\nInnerException:{6}\n{7}", errorCode, ex.Message, ex.StackTrace, jex.Line, jex.Column, jex.SourceCode, ex.InnerException.Message, ex.InnerException.StackTrace);
                    }
                }
                else
                {
                    errlog = string.Format("错误编号:{0},\n{1}\n{2}\n出错代码行数{3}\n出错代码列数{4}\n出错代码位置{5}", errorCode, ex.Message, ex.StackTrace,
                                           jex.Line, jex.Column, jex.SourceCode.Replace("\"", "'"));
                }
            }
            else
            {
                if (ex.InnerException != null)
                {
                    if (ex.InnerException is HostJsException)
                    {
                        var ijex = (HostJsException)ex.InnerException;
                        errlog = string.Format("错误编号:{0},\n{1}\n{2}\nInnerException:{3}\n{4}\n\n出错代码行数{5}\n出错代码列数{6}\n出错代码位置{7}", errorCode, ex.Message, ex.StackTrace,
                                               ex.InnerException.Message, ex.InnerException.StackTrace,
                                               ijex.Line, ijex.Column, ijex.SourceCode.Replace("\"", "'"));
                    }
                    else
                    {
                        errlog = string.Format("错误编号:{0},\n{1}\n{2}\nInnerException:{3}\n{4}", errorCode, ex.Message, ex.StackTrace, ex.InnerException.Message, ex.InnerException.StackTrace);
                    }
                }
                else
                {
                    errlog = string.Format("错误编号:{0},\n{1}\n{2}", errorCode, ex.Message, ex.StackTrace);
                }
            }

            GlobalCommon.Logger.WriteLog(LoggerLevel.ERROR, errlog);

            var errormsg = "";
            var isdebug  = p[DomainKey.CONFIG, "DebugMode"] == null ? false : (bool)p[DomainKey.CONFIG, "DebugMode"];

            if (isdebug)
            {
                errormsg = string.Format("出错了,{0}", errlog);;
            }
            else
            {
                errormsg = string.Format("系统出错了,请联系相关人员帮助处理,并告知其错误编号。谢谢!(错误编号:{0})", errorCode);
            }

            CurrentContext.Response.StatusCode = 200;
            var jsonmsg       = ComFunc.FormatJSON(errorCode, errormsg, "").ToJSONString();
            var msgbytelength = Encoding.UTF8.GetByteCount(jsonmsg);

            CurrentContext.Response.Headers.Add("Content-Length", msgbytelength + "");
            if (wd.ContentType == GoResponseDataType.Json)
            {
                CurrentContext.Response.ContentType = ResponseHeader_ContentType.json + ";charset=utf-8";
                CurrentContext.Response.WriteAsync(jsonmsg).Wait();
            }
            else if (wd.ContentType == GoResponseDataType.RazorView)
            {
                CurrentContext.Response.ContentType = ResponseHeader_ContentType.json + ";charset=utf-8";
                CurrentContext.Response.WriteAsync(jsonmsg).Wait();
            }
            else if (wd.ContentType == GoResponseDataType.HostView)
            {
                //var viewpath = "~/error.hjs".Replace("~", GlobalCommon.HostCommon.RootPath + HostJsConstants.COMPILED_VIEW_PATH);
                //if (File.Exists(viewpath))
                //{
                //    //调用hostview引擎进行渲染
                //    HostJsView hjv = (HostJsView)p.ExtentionObj.hostviewengine;
                //    hjv.CurrentContext.SetDataModel(FrameDLRObject.CreateInstanceFromat(@"{ErrorTitle:{0},ErrorMsg:{1}}", "系统出错了", errormsg).ToDictionary());
                //    var html = hjv.Render(File.ReadAllText(viewpath, Encoding.UTF8));

                //    CurrentContext.Response.ContentType = ResponseHeader_ContentType.html + ";charset=utf-8";
                //    CurrentContext.Response.WriteAsync(html).Wait();
                //}
                //else
                //{
                //    CurrentContext.Response.ContentType = ResponseHeader_ContentType.json + ";charset=utf-8";
                //    CurrentContext.Response.WriteAsync(ComFunc.FormatJSON(errorCode, errlog, "").ToJSONString()).Wait();
                //}
            }
            else
            {
                CurrentContext.Response.ContentType = ResponseHeader_ContentType.json + ";charset=utf-8";
                CurrentContext.Response.WriteAsync(jsonmsg).Wait();
            }

            CurrentContext.Response.Body.FlushAsync().Wait();
        }
예제 #24
0
 public virtual void OnError(Exception ex, ParameterStd p, DataCollection data)
 {
     throw ex;
 }
예제 #25
0
 protected override void OnError(Exception ex, ParameterStd p, DataCollection d)
 {
     throw ex;
 }
예제 #26
0
        public DataCollection DoOperate(ParameterStd p)
        {
            string flag = p.GetValue <string>("_unit_action_flag_");
            //预执行
            T                  t   = (T)Activator.CreateInstance(typeof(T), true);
            UnitParameter      up  = (UnitParameter)p;
            UnitDataCollection rtn = new UnitDataCollection();

            if (up.Dao is ADBAccess)
            {
                var       sqlobj     = t.GetSqlFunc(flag)(up);
                ADBAccess dba        = (ADBAccess)up.Dao;
                string    regstr     = "";
                string    regexpress = @"(?isx)
                                (')                                                           #开始标记“<tag...>”
                                (?>                                                                  #分组构造,用来限定量词“*”修饰范围
                                \1  (?<Open>)                                                 #命名捕获组,遇到开始标记,入栈,Open计数加1
                                |\1  (?<-Open>)                                                   #狭义平衡组,遇到结束标记,出栈,Open计数减1
                                |[^']*                                                   #右侧不为开始或结束标记的任意字符
                                )
                                (?(Open)(?!))                                                        #判断是否还有'OPEN',有则说明不配对,什么都不匹配
                                \1                                                                #结束标记“</tag>”
                     ";
                string    tmpsql     = "";
                if (dba is OracleAccess)
                {
                    regstr = @"(?<=:)[a-zA-Z0-9_]*\d*";
                }
                else
                {
                    regstr = @"(?<=@)[A-Za-z0-9_]+\d*";
                }
                Regex re  = new Regex(regstr);
                Regex re2 = new Regex(regexpress);
                try
                {
                    if (!(sqlobj is FrameDLRObject))
                    {
                        throw new TypeRequiredException("需要指定的动态数据对象:FrameDLRObject");
                    }

                    string   presql = sqlobj.presql;
                    DBAPageP dbc    = new DBAPageP();
                    dba.BeginTransaction();
                    if (!string.IsNullOrEmpty(presql))
                    {
                        tmpsql = presql.Replace("''", "#sp#");
                        foreach (Match m in re2.Matches(tmpsql))
                        {
                            tmpsql = tmpsql.Replace(m.Value, "#sp#");
                        }

                        foreach (System.Text.RegularExpressions.Match m in re.Matches(tmpsql))
                        {
                            dbc.SQL_Parameters.Add(m.ToString(), up.GetValue(m.ToString()));
                        }
                        dba.ExecuteNoQuery(presql, dbc.SQL_Parameters);
                    }
                    //执行翻页查询
                    string sql     = sqlobj.sql;
                    string orderby = sqlobj.orderby;
                    if (!string.IsNullOrEmpty(sql))
                    {
                        tmpsql = sql.Replace("''", "#sp#");
                        foreach (Match m in re2.Matches(tmpsql))
                        {
                            tmpsql = tmpsql.Replace(m.Value, "#sp#");
                        }

                        dbc.SQL_Parameters.Clear();
                        foreach (System.Text.RegularExpressions.Match m in re.Matches(tmpsql))
                        {
                            if (up.GetValue(m.ToString()) is byte[])
                            {
                                dbc.SQL_Parameters.Add(m.ToString(), up.GetValue(m.ToString()), System.Data.DbType.Binary);
                            }
                            else
                            {
                                dbc.SQL_Parameters.Add(m.ToString(), up.GetValue(m.ToString()));
                            }
                        }
                        dbc.SQL              = sql;
                        dbc.OrderBy          = orderby;
                        dbc.Count_of_OnePage = up.Count_Of_OnePage;
                        dbc.CurrentPage      = up.CurrentPage;
                        dba.StartPageByCondition(dbc);
                        rtn.QueryTable       = dba.GoToPage(up.ToPage);
                        rtn.Count_Of_OnePage = up.Count_Of_OnePage;
                        rtn.CurrentPage      = dba.CurrentPage;
                        rtn.TotalPage        = dba.TotalPage;
                        rtn.TotalRow         = dba.TotalRow;
                    }
                    //收尾处理
                    string aftersql = sqlobj.aftersql;
                    if (!string.IsNullOrEmpty(aftersql))
                    {
                        tmpsql = aftersql.Replace("''", "#sp#");
                        foreach (Match m in re2.Matches(tmpsql))
                        {
                            tmpsql = tmpsql.Replace(m.Value, "#sp#");
                        }

                        dbc.SQL_Parameters.Clear();
                        foreach (System.Text.RegularExpressions.Match m in re.Matches(tmpsql))
                        {
                            dbc.SQL_Parameters.Add(m.ToString(), up.GetValue(m.ToString()));
                        }
                        dba.ExecuteNoQuery(aftersql, dbc.SQL_Parameters);
                    }

                    dba.CommitTransaction();
                }
                catch
                {
                    if (dba != null)
                    {
                        dba.RollbackTransaction();
                    }
                    throw;
                }
            }
            return(rtn);
        }
 protected override void OnError(Exception ex, ParameterStd p, DataCollection d)
 {
     throw new RazorException("Razor parse failed!" + ex.Message, ex);
 }
예제 #28
0
        public DataCollection DoOperate(ParameterStd p)
        {
            UnitDataCollection rtn  = new UnitDataCollection();
            string             flag = p.GetValue <string>("_unit_action_flag_");
            UnitParameter      up   = (UnitParameter)p;

            if (up.Dao is ADBAccess)
            {
                T   t      = (T)Activator.CreateInstance(typeof(T), true);
                var sqlobj = t.GetSqlFunc(flag)(up);
                if (!(sqlobj is FrameDLRObject))
                {
                    throw new TypeRequiredException("需要指定的动态数据对象:FrameDLRObject");
                }
                string    sql = sqlobj.sql;
                ADBAccess dba = (ADBAccess)up.Dao;
                DBOParameterCollection dbc = new DBOParameterCollection();
                if (!string.IsNullOrEmpty(sql))
                {
                    string regstr = "";
                    regstr = @"(?<=" + (dba.ParameterFlagChar == "$"?"\\$": dba.ParameterFlagChar) + @")[A-Za-z0-9_]+\d*";
                    string regexpress = @"(?isx)
                                (')                                                           #开始标记“<tag...>”
                                (?>                                                                  #分组构造,用来限定量词“*”修饰范围
                                \1  (?<Open>)                                                 #命名捕获组,遇到开始标记,入栈,Open计数加1
                                |\1  (?<-Open>)                                                   #狭义平衡组,遇到结束标记,出栈,Open计数减1
                                |[^']*                                                   #右侧不为开始或结束标记的任意字符
                                )
                                (?(Open)(?!))                                                        #判断是否还有'OPEN',有则说明不配对,什么都不匹配
                                \1                                                                #结束标记“</tag>”
                     ";
                    Regex  re         = new Regex(regstr);
                    string tmpsql     = "";
                    Regex  re2        = new Regex(regexpress);
                    tmpsql = sql.Replace("''", "#sp#");
                    foreach (Match m in re2.Matches(tmpsql))
                    {
                        tmpsql = tmpsql.Replace(m.Value, "#sp#");
                    }
                    foreach (System.Text.RegularExpressions.Match m in re.Matches(tmpsql))
                    {
                        if (up.GetValue(m.ToString()) is byte[])
                        {
                            dbc.Add(m.ToString(), up.GetValue(m.ToString()), System.Data.DbType.Binary);
                        }
                        else if (up.GetValue(m.ToString()) is DateTime)
                        {
                            dbc.Add(m.ToString(), up.GetValue(m.ToString()), System.Data.DbType.DateTime);
                        }
                        else if (up.GetValue(m.ToString()) is int)
                        {
                            dbc.Add(m.ToString(), up.GetValue(m.ToString()), System.Data.DbType.Int32);
                        }
                        else if (up.GetValue(m.ToString()) is double)
                        {
                            dbc.Add(m.ToString(), up.GetValue(m.ToString()), System.Data.DbType.Double);
                        }
                        else
                        {
                            dbc.Add(m.ToString(), up.GetValue(m.ToString()));
                        }
                    }
                }
                try
                {
                    rtn.QueryDatas = dba.Query(sql, dbc);
                }catch (Exception ex)
                {
                    FrameDLRObject dp = FrameDLRObject.CreateInstance(Base.Constants.FrameDLRFlags.SensitiveCase);
                    foreach (var item in dbc)
                    {
                        if (item.Value.ParameterValue is DateTime)
                        {
                            dp.SetValue(item.Key, DateTimeStd.IsDateTimeThen(item.Value.ParameterValue, "yyyy-MM-dd HH:mm:ss"));
                        }
                        else if (item.Value.ParameterValue is DBNull)
                        {
                            dp.SetValue(item.Key, null);
                        }
                        else
                        {
                            dp.SetValue(item.Key, item.Value.ParameterValue);
                        }
                    }
                    GlobalCommon.Logger.WriteLog(Base.Constants.LoggerLevel.ERROR, $"QuerySql={sql};\nParameters={dp.ToJSONString()}");

                    throw ex;
                }
                if (rtn.QueryDatas != null && rtn.QueryDatas.Tables.Count > 0)
                {
                    rtn.QueryTable = rtn.QueryDatas[0];
                }
            }
            return(rtn);
        }
예제 #29
0
        public static DataCollection Call <T>(ParameterStd p) where T : IUnit
        {
            T t = (T)Activator.CreateInstance(typeof(T), true);

            return(t.DoOperate(p));
        }
예제 #30
0
 public void ProcessException(object sender, Exception ex, ParameterStd p, DataCollection d)
 {
     GlobalCommon.Logger.WriteLog(Base.Constants.LoggerLevel.ERROR, ex.Message);
 }