Beispiel #1
0
        private void BuildColumnParameter(DbColumnAttribute column, MySqlCommand cmd, EntityType entity)
        {
            if (column.DbType == System.Data.DbType.String && column.Property.PropertyType == typeof(List <int>))
            {
                var o = column.Property.GetValue(entity);
                if (null == o)
                {
                    column.BuildParameter(cmd).Value = "";
                }
                else
                {
                    column.BuildParameter(cmd).Value = string.Join(",", ((List <int>)o).Select(item => item.ToString()).ToArray());
                }
            }
            else
            {
                object value = column.Property.GetValue(entity);
                if (null == value && column.IsOptional)
                {
                    switch (column.DbType)
                    {
                    case System.Data.DbType.String: value = ""; break;

                    case System.Data.DbType.Currency: value = 0.0m; break;

                    case System.Data.DbType.Int32: value = 0; break;
                    }
                }
                column.BuildParameter(cmd).Value = value;
            }
        }
Beispiel #2
0
 private void BuildLikeParameter(MySqlCommand cmd, StringBuilder sqlBuilder, DbColumnAttribute column, object value)
 {
     if (column.DbType == System.Data.DbType.String)
     {
         var s = value as string;
         if (null != s)// && s.Contains("|"))
         {
             string[] values = s.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries).Distinct().ToArray();
             if (values.Length != 0)
             {
                 sqlBuilder.Append("(");
                 try
                 {
                     string paramName = string.Format("@param__{0}", cmd.Parameters.Count);// + ConvertToParamName(values[0]);
                     BuildFuzzyOrLiteralCommand(sqlBuilder, cmd, paramName, column, values[0]);
                     for (int i = 1; i < values.Length; i++)
                     {
                         sqlBuilder.Append(" OR ");
                         paramName = string.Format("@param__{0}", cmd.Parameters.Count);//paramName = "@" + ConvertToParamName(values[i]);
                         BuildFuzzyOrLiteralCommand(sqlBuilder, cmd, paramName, column, values[i]);
                     }
                 }
                 finally
                 {
                     sqlBuilder.Append(")");
                 }
                 return;
             }
         }
     }
     else if (column.DbType == System.Data.DbType.Currency)
     {
         //todo: it will be a string if it is separated by a character
         var s = value as string;
         if (null != s)
         {
             string[] minMax = s.Split(new char[] { '-', ':', '|' }, StringSplitOptions.RemoveEmptyEntries);
             if (minMax.Length == 2)
             {
                 decimal min = decimal.Parse(minMax[0], System.Globalization.NumberStyles.Currency);
                 decimal max = decimal.Parse(minMax[1], System.Globalization.NumberStyles.Currency);
                 sqlBuilder.AppendFormat("(@Min{0} <= {0} AND {0} <= @Max{0})", column.ColumnName);
                 cmd.Parameters.Add("@Min" + column.ColumnName, column.DbType).Value = min;
                 cmd.Parameters.Add("@Max" + column.ColumnName, column.DbType).Value = max;
                 return;
             }
         }
     }
     sqlBuilder.AppendFormat("{0} = @{0}", column.ColumnName);
     column.BuildParameter(cmd).Value = value;
 }