/// <summary> /// 初始化Sql查询语句类 /// </summary> /// <param name="baseCommand">源Sql语句</param> /// <param name="parameterOne">参数一</param> /// <param name="parameterTwo">参数二</param> /// <param name="op">条件运算符</param> internal SqlBasicParameterCondition(AbstractSqlCommand baseCommand, SqlParameter parameterOne, SqlParameter parameterTwo, SqlOperator op) : base(baseCommand) { this._parameterOne = parameterOne; this._parameterTwo = parameterTwo; this._operator = op; }
/// <summary> /// 初始化Sql查询语句类 /// </summary> /// <param name="baseCommand">源Sql语句</param> /// <param name="columnName">字段名称</param> /// <param name="op">条件运算符</param> /// <param name="command">选择语句</param> internal SqlBasicCommandCondition(AbstractSqlCommand baseCommand, String columnName, SqlOperator op, SelectCommand command) : base(baseCommand) { this._columnName = columnName; this._operator = op; this._command = command; }
/// <summary> /// 获取一定包含数据类型的表达式所指的列特性 /// </summary> /// <param name="sourceCommand">来源Sql语句</param> /// <param name="expr">表达式</param> /// <returns>表达式所指的列特性</returns> internal static DatabaseColumnAttribute GetColumnAttributeWithDataType(AbstractSqlCommand sourceCommand, MemberExpression expr) { DatabaseColumnAttribute attr = ExpressionHelper.GetColumnAttribute(sourceCommand, expr); if (attr != null && !attr.DataType.HasValue) { attr.DataType = DataTypeHelper.InternalGetDataType(expr.Type); } return(attr); }
/// <summary> /// 获取表达式所指的列特性 /// </summary> /// <param name="sourceCommand">来源Sql语句</param> /// <param name="expr">表达式</param> /// <returns>表达式所指的列特性</returns> internal static DatabaseColumnAttribute GetColumnAttribute(AbstractSqlCommand sourceCommand, MemberExpression expr) { DatabaseColumnAttribute attr = (sourceCommand != null && sourceCommand.SourceDatabaseTable != null ? sourceCommand.SourceDatabaseTable[expr.Member.Name] : null); if (attr == null) { attr = EntityHelper.InternalGetColumnAttribute(expr.Member.DeclaringType, expr.Member.Name); } return(attr); }
/// <summary> /// 初始化Sql IN参数条件语句类 /// </summary> /// <param name="baseCommand">源Sql语句</param> /// <param name="isNotIn">是否不在范围内</param> /// <param name="parameters">参数集合</param> internal SqlInsideParametersCondition(AbstractSqlCommand baseCommand, Boolean isNotIn, params SqlParameter[] parameters) : base(baseCommand) { this._isNotIn = isNotIn; this._parameters = new List<SqlParameter>(); if (parameters != null) { this._parameters.AddRange(parameters); } }
/// <summary> /// 获取指定实体类的Sql语句参数集合 /// </summary> /// <param name="cmd">Sql语句</param> /// <param name="entity">实体类</param> /// <returns>Sql语句参数集合</returns> internal static DataParameter[] InternalGetSqlParameters(AbstractSqlCommand cmd, Object entity) { List <DataParameter> parameters = new List <DataParameter>(); if (entity == null) { return(parameters.ToArray()); } Type entityType = entity.GetType(); PropertyInfo[] props = entityType.GetProperties(); foreach (PropertyInfo prop in props) { DatabaseColumnAttribute attr = null; DataType?dataType = null; Object[] objs = prop.GetCustomAttributes(TypeOfDatabaseColumnAttribute, true); foreach (Object obj in objs) { if ((attr = obj as DatabaseColumnAttribute) != null) { break; } } if (attr != null) { dataType = attr.DataType; if (!dataType.HasValue) { dataType = DataTypeHelper.InternalGetDataType(prop.PropertyType); } DataParameter parameter = cmd.CreateDataParameter(attr.ColumnName, dataType.Value, prop.GetValue(entity, null)); parameters.Add(parameter); } } return(parameters.ToArray()); }
/// <summary> /// 初始化新的Sql抽象条件语句 /// </summary> /// <param name="baseCommand">源Sql语句</param> internal AbstractSqlCondition(AbstractSqlCommand baseCommand) { this._baseCommand = baseCommand; }
/// <summary> /// 创建新的Sql选择语句 /// </summary> /// <param name="rootSource">创建时的根来源</param> /// <param name="from">选择的从Sql语句</param> /// <param name="fromAliasesName">从Sql语句的别名</param> /// <returns>Sql选择语句</returns> internal SelectCommand InternalCreateSelectCommand(AbstractSqlCommand rootSource, SelectCommand from, String fromAliasesName) { return(new SelectCommand(this, rootSource, from, fromAliasesName)); }
/// <summary> /// 创建新的Sql选择语句 /// </summary> /// <param name="rootSource">创建时的根来源</param> /// <param name="tableName">数据表名称</param> /// <param name="tableAliasesName">数据表别名</param> /// <returns>Sql选择语句</returns> internal SelectCommand InternalCreateSelectCommand(AbstractSqlCommand rootSource, String tableName, String tableAliasesName) { return(new SelectCommand(this, rootSource, tableName + ' ' + tableAliasesName)); }
/// <summary> /// 获取表达式所指的列名 /// </summary> /// <param name="sourceCommand">来源Sql语句</param> /// <param name="expr">表达式</param> /// <returns>表达式所指的列名</returns> internal static String GetColumnName(AbstractSqlCommand sourceCommand, MemberExpression expr) { DatabaseColumnAttribute attr = ExpressionHelper.GetColumnAttribute(sourceCommand, expr); return(attr != null ? attr.ColumnName : String.Empty); }
/// <summary> /// 初始化Sql Not条件语句类 /// </summary> /// <param name="baseCommand">源Sql语句</param> /// <param name="baseCondition">基础Sql条件语句</param> internal SqlNotCondition(AbstractSqlCommand baseCommand, ISqlCondition baseCondition) : base(baseCommand) { this._baseCondition = baseCondition; }