示例#1
0
        internal static void AnalyingIn <T>(DbProvider dbProvider, Expression <Func <T, Object> > filter, SQLComponent component, Object[] values)
            where T : class
        {
            MemberExpression expression;
            ExpressionType   noteType = filter.Body.NodeType;;

            switch (noteType)
            {
            case ExpressionType.Convert:
                UnaryExpression unary = filter.Body as UnaryExpression;
                expression = (MemberExpression)unary.Operand;
                break;

            case ExpressionType.MemberAccess:
            {
                expression = filter.Body as MemberExpression;
            }
            break;

            default:
                throw new ArgumentException(nameof(filter));;
            }


            SchemaCache schema     = Table <T> .Schema;
            var         colSchema  = schema.GetColumnSchema(expression.Member.Name);
            String      columnName = colSchema.Name;

            columnName = String.Format(dbProvider.ConflictFreeFormat, columnName);
            columnName = String.Format(CommonFormat.COLUMN_FORMAT, schema.TableName, columnName);

            StringBuilder inParaNames = new StringBuilder();
            Int32         count       = values.Length;
            String        paraSymbol  = "inPara";

            for (Int32 i = 0; i < count; ++i)
            {
                String paraName = dbProvider.Prefix + paraSymbol + ParaCounter <T> .CountString;
                inParaNames.Append(paraName);
                if (i != (count - 1))
                {
                    inParaNames.Append(SqlKeyWord.COMMA);
                }
                DbParameter parameter = dbProvider.DbParameter(
                    paraName, values[i], colSchema.DbType
                    );
                component.AddParameter(parameter);
            }
            component.AppendSQL(columnName);
            component.AppendSQL(SqlKeyWord.IN);
            component.AppendSQLFormat(CommonFormat.BRACKET_FORMAT, inParaNames.ToString());
        }
示例#2
0
 public static void BatchInsertConvert(DbProvider dbProvider, IEnumerable <T> objs, SQLComponent component)
 {
     foreach (T obj in objs)
     {
         InsertConvert(dbProvider, obj, component);
         component.AppendSQL(SqlKeyWord.SEMICOLON);
     }
 }
示例#3
0
        internal static void AnalyingIn <T>(DbProvider dbProvider, String columnName, SQLComponent component, Object[] values)
            where T : class
        {
            StringBuilder inParaNames = new StringBuilder();
            Int32         count       = values.Length;
            String        paraSymbol  = "inPara";

            for (Int32 i = 0; i < count; ++i)
            {
                String paraName = dbProvider.Prefix + paraSymbol + ParaCounter <T> .CountString;
                inParaNames.Append(paraName);
                if (i != (count - 1))
                {
                    inParaNames.Append(SqlKeyWord.COMMA);
                }
                DbParameter parameter = dbProvider.DbParameter(
                    paraName, values[i]
                    );
                component.AddParameter(parameter);
            }
            component.AppendSQL(columnName);
            component.AppendSQL(SqlKeyWord.IN);
            component.AppendSQLFormat(CommonFormat.BRACKET_FORMAT, inParaNames.ToString());
        }