Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="dba"></param>
        /// <param name="dynamicJson"></param>
        /// <param name="columns"></param>
        /// <returns></returns>
        public DbParameter[] BuildParameter(Type t, DBAccessor dba, DynamicJson dynamicJson, ref IList <string> columns)
        {
            IList <DbParameter> paras = new List <DbParameter>();

            PropertyInfo[] propertys = t.GetProperties().Where(a => a.GetAttribute <EdmScalarPropertyAttribute>() != null).ToArray();
            if (propertys.Count() == 0)
            {
                propertys = t.GetProperties().Where(a => a.GetAttribute <ColumnAttribute>() != null).ToArray();
            }

            foreach (var columnName in dynamicJson.Keys)
            {
                try
                {
                    bool isDate = false;
                    var  p      = propertys.FirstOrDefault(b => b.Name.ToUpper() == columnName.ToUpper());
                    if (p != null && p.PropertyType == typeof(DateTime))
                    {
                        isDate = true;
                    }
                    if (columnName.StartsWith("_") || propertys.Count(b => b.Name.ToUpper() == columnName.ToUpper()) == 0)
                    {
                        continue;
                    }
                    if (dynamicJson.ContainsKey(columnName))
                    {
                        object v = dynamicJson.Get(columnName);
                        if (isDate)
                        {
                            v = v.Convert <DateTime>();
                        }
                        else if (v.ToString().ToUpper() == "TRUE" || v.ToString().ToUpper() == "FALSE")
                        {
                            v = v.Convert <bool>() ? 1 : 0;
                        }
                        paras.Add(dba.CreateDbParameter(columnName, v));
                    }
                    columns.Add(columnName);
                }
                catch (Exception ex)
                {
                    Loger.Log(Assembly.GetExecutingAssembly().FullName, MethodBase.GetCurrentMethod().FullName() + "\r\n列名->\r\n" + columnName, ex);
                }
            }
            return(paras.ToArray());
        }
Beispiel #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="dba"></param>
        /// <param name="dynamicJson">以下划线开头的key不会构建参数</param>
        /// <returns></returns>
        public DbParameter[] BuildParameter(DBAccessor dba, DynamicJson dynamicJson)
        {
            IList <DbParameter> paras = new List <DbParameter>();

            foreach (var columnName in dynamicJson.Keys)
            {
                try
                {
                    bool isDate = false;
                    if (dynamicJson.GetStr(columnName) != null && columnName.Contains("Date"))
                    {
                        isDate = true;
                    }
                    if (columnName.StartsWith("_"))
                    {
                        continue;
                    }

                    if (dynamicJson.ContainsKey(columnName))
                    {
                        var dp = dba.CreateDbParameter(columnName, isDate ? dynamicJson.Get(columnName).Convert <DateTime>() : dynamicJson.Get(columnName));
                        if (columnName == "rs_1" && dp.GetType().FullName.Contains("Oracle"))
                        {
                            (dp as OracleParameter).OracleDbType = OracleDbType.RefCursor;
                            dp.Direction = ParameterDirection.Output;
                        }
                        paras.Add(dp);
                    }
                }
                catch (Exception ex)
                {
                    Loger.Log(Assembly.GetExecutingAssembly().FullName, MethodBase.GetCurrentMethod().FullName() + "\r\n列名->\r\n" + columnName, ex);
                }
            }
            return(paras.ToArray());
        }