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()); }
public static void BatchInsertConvert(DbProvider dbProvider, IEnumerable <T> objs, SQLComponent component) { foreach (T obj in objs) { InsertConvert(dbProvider, obj, component); component.AppendSQL(SqlKeyWord.SEMICOLON); } }
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()); }