/// <summary> /// 执行一个查找多项的命令模型。 /// </summary> /// <typeparam name="TEntity">实体的数据类型。</typeparam> /// <param name="bus">命令总线。</param> /// <param name="whereParameters">一个 WHERE 的条件参数。</param> /// <returns>返回一个实体的集合。</returns> public static List <TEntity> FindAllWhere <TEntity>(this ICommandBus bus, WhereParameters whereParameters) { return(bus.Execute(new CMD.FindAllWhere <TEntity>() { WhereParameters = whereParameters }).ResultValue); }
/// <summary> /// 执行一个查找单项的命令模型。 /// </summary> /// <typeparam name="TEntity">实体的数据类型。</typeparam> /// <typeparam name="TView">视图的数据类型。</typeparam> /// <param name="bus">命令总线。</param> /// <param name="whereParameters">一个 WHERE 的条件参数。</param> /// <returns>返回一个实体。</returns> public static TView FindOneWhere <TEntity, TView>(this ICommandBus bus, WhereParameters whereParameters) { return(bus.Execute(new CMD.FindOneWhere <TEntity, TView>() { WhereParameters = whereParameters }).ResultValue); }
/// <summary> /// 执行一个条件的修改的命令模型。 /// </summary> /// <typeparam name="TEntity">实体的数据类型。</typeparam> /// <param name="bus">命令总线。</param> /// <param name="entity">实体的实例。</param> /// <param name="whereParameters">一个 WHERE 的条件参数。</param> /// <returns>返回受影响的行。</returns> public static int ModifyWhere <TEntity>(this ICommandBus bus, object entity, WhereParameters whereParameters) { return(bus.Execute(new CMD.ModifyWhere <TEntity>() { Entity = entity, WhereParameters = whereParameters }).ResultValue); }
/// <summary> /// 执行一个一个获取查询条件的数据表行数的命令模型。 /// </summary> /// <typeparam name="TEntity">实体的数据类型。</typeparam> /// <param name="bus">命令总线。</param> /// <param name="whereParameters">一个 WHERE 的条件参数。</param> /// <returns>返回数据的行数。</returns> public static long RowCount <TEntity>(this ICommandBus bus, WhereParameters whereParameters) { return(bus.Execute(new CMD.RowCount <TEntity>() { WhereParameters = whereParameters }).ResultValue); }
/// <summary> /// 执行一个查询条件是否存在的命令模型。 /// </summary> /// <typeparam name="TEntity">实体的数据类型。</typeparam> /// <param name="bus">命令总线。</param> /// <param name="whereParameters">一个 WHERE 的条件参数。</param> /// <returns>返回一个值,表示数据是否存在。</returns> public static bool ExistsWhere <TEntity>(this ICommandBus bus, WhereParameters whereParameters) { return(bus.Execute(new CMD.ExistsWhere <TEntity>() { WhereParameters = whereParameters }).ResultValue); }
/// <summary> /// 创建一个筛选执行器。 /// </summary> /// <param name="engine">数据源查询与交互引擎的实例。</param> /// <param name="where">条件参数。</param> /// <returns>筛选执行器。</returns> public static IFilterExecutor Filter(this IDbEngine engine, WhereParameters where) { if (engine == null) { throw new ArgumentNullException(nameof(engine)); } if (where == null) { throw new ArgumentNullException(nameof(where)); } return(new FilterExecutor(engine, where)); }
/// <summary> /// 创建一个筛选执行器。 /// </summary> /// <param name="bus">命令总线。</param> /// <param name="where">条件参数。</param> /// <returns>筛选执行器。</returns> public static IFilterExecutor Filter(this ICommandBus bus, WhereParameters where) { if (bus == null) { throw new ArgumentNullException(nameof(bus)); } if (where == null) { throw new ArgumentNullException(nameof(where)); } return(new CommandFilterExecutor(bus, where)); }
/// <summary> /// 创建一个筛选执行器。 /// </summary> /// <param name="engine">数据源查询与交互引擎的实例。</param> /// <param name="whereCallback">一个创建查询条件的回调方法。</param> /// <returns>筛选执行器。</returns> public static IFilterExecutor Filter(this IDbEngine engine, Action <IWhere> whereCallback) { if (engine == null) { throw new ArgumentNullException(nameof(engine)); } var builder = new SqlBuilder(engine); whereCallback(builder.Where()); var wp = new WhereParameters(builder.WhereText, builder.Parameters); wp.OrderBy = builder.OrderByText; return(Filter(engine, wp)); }
/// <summary> /// 执行一个以分页方式查找多项的命令模型。 /// </summary> /// <typeparam name="TEntity">实体的数据类型。</typeparam> /// <typeparam name="TView">视图的数据类型。</typeparam> /// <param name="bus">命令总线。</param> /// <param name="page">分页的数据。</param> /// <param name="whereParameters">一个 WHERE 的条件参数。</param> /// <returns>返回一个实体的分页集合。</returns> public static GridData <TView> FindAllPage <TEntity, TView>(this ICommandBus bus, IPagination page, WhereParameters whereParameters) { return(bus.Execute(new CMD.FindAllPage <TEntity, TView>() { Page = page, WhereParameters = whereParameters }).ResultValue); }
/// <summary> /// 指定类型映射器和条件参数创建一个表总行数的命令。 /// </summary> /// <param name="mapper">类型映射器。</param> /// <param name="where">条件参数。</param> /// <param name="tunnel">用于个性化表名和命令的暗道,可以为 null 值。</param> /// <returns>一个查询命令。</returns> public virtual ExecuteCommand CreateRowCountCommand(TypeMapper mapper, WhereParameters where, ICommandTunnel tunnel = null) { if(mapper == null) throw new ArgumentNullException(nameof(mapper)); if(where == null) throw new ArgumentNullException(nameof(where)); if(tunnel == null) tunnel = Empty; var commandText = "SELECT COUNT(*) FROM " + this.EscapeName(tunnel.GetTableName(mapper), NamePoint.Table); return tunnel.GetCommand(mapper, new ExecuteCommand(where.AppendTo(commandText), where.Parameters)); }
/// <summary> /// 指定类型映射器和实体创建一个更新的命令。 /// </summary> /// <param name="mapper">类型映射器。</param> /// <param name="entity">实体的实例对象。</param> /// <param name="where">条件参数。</param> /// <param name="tunnel">用于个性化表名和命令的暗道,可以为 null 值。</param> /// <returns>一个查询命令。</returns> public virtual ExecuteCommand CreateUpdateCommand(TypeMapper mapper, object entity, WhereParameters where, ICommandTunnel tunnel = null) { if(mapper == null) throw new ArgumentNullException(nameof(mapper)); if(entity == null) throw new ArgumentNullException(nameof(entity)); if(where == null) throw new ArgumentNullException(nameof(where)); if(tunnel == null) tunnel = Empty; var setBuilder = new StringBuilder("UPDATE ") .Append(this.EscapeName(tunnel.GetTableName(mapper), NamePoint.Table)) .Append(" SET "); var ps = where.Parameters ?? new ExecuteParameterCollection(mapper.Count); int index = 0; foreach(var property in FindProperties(mapper, ref entity)) { if(property.IsIgnore || property.IsKey) continue; if(index++ > 0) setBuilder.Append(','); setBuilder.Append(this.EscapeName(property.Name, NamePoint.Field)) .Append('='); var value = property.GetValue(entity); this.AppendParameterValue(property, setBuilder, value, ps); } if(index==0) throw new NotSupportedException($"{entity.GetType().FullName} 的更新操作没有找到任何属性。"); return tunnel.GetCommand(mapper, new ExecuteCommand(where.AppendTo(setBuilder.ToString()), ps)); }
/// <summary> /// 指定实体类型映射器、视图映射器和条件创建一个查询的命令。 /// </summary> /// <param name="entityMapper">实体的类型映射器。</param> /// <param name="viewMapper">视图的类型映射器。</param> /// <param name="where">条件参数。</param> /// <param name="top">指定 TOP 数量,小于 1 则忽略作用。</param> /// <param name="tunnel">用于个性化表名和命令的暗道,可以为 null 值。</param> /// <returns>一个查询命令。</returns> public virtual ExecuteCommand CreateQueryCommand(TypeMapper entityMapper, TypeMapper viewMapper, WhereParameters where, int top = 0, ICommandTunnel tunnel = null) { if(where == null) throw new ArgumentNullException(nameof(where)); if(tunnel == null) tunnel = Empty; var fields = this.CreateFields(entityMapper, viewMapper); if(top > 0) fields = string.Concat("TOP ", top.ToString(), " ", fields); var commandText = string.Concat("SELECT ", fields, " FROM ", this.EscapeName(tunnel.GetTableName(entityMapper), NamePoint.Table)); return tunnel.GetCommand(entityMapper, new ExecuteCommand(where.AppendTo(commandText), where.Parameters)); }
/// <summary> /// 执行一个一个获取查询条件的数据表行数的命令模型。 /// </summary> /// <typeparam name="TEntity">实体的数据类型。</typeparam> /// <param name="bus">命令总线。</param> /// <param name="ps">参数集合实例。</param> /// <param name="binary">二元运算符。</param> /// <returns>返回数据的行数。</returns> public static long RowCount <TEntity>(this ICommandBus bus, ExecuteParameterCollection ps, string binary = "AND") { return(RowCount <TEntity>(bus, WhereParameters.Parse(bus.GetDbEngine(), ps, binary))); }
/// <summary> /// 执行一个条件的修改的命令模型。 /// </summary> /// <typeparam name="TEntity">实体的数据类型。</typeparam> /// <param name="bus">命令总线。</param> /// <param name="entity">实体的实例。</param> /// <param name="ps">参数集合。</param> /// <param name="binary">二元运算符。</param> /// <returns>返回受影响的行。</returns> public static int ModifyWhere <TEntity>(this ICommandBus bus, object entity, ExecuteParameterCollection ps, string binary = "AND") { return(ModifyWhere <TEntity>(bus, entity, WhereParameters.Parse(bus.GetDbEngine(), ps, binary))); }
/// <summary> /// 执行一个查找多项的命令模型。 /// </summary> /// <typeparam name="TEntity">实体的数据类型。</typeparam> /// <typeparam name="TView">视图的数据类型。</typeparam> /// <param name="bus">命令总线。</param> /// <param name="objectInstance">匿名参数集合实例。</param> /// <param name="binary">二元运算符。</param> /// <returns>返回一个实体的集合。</returns> public static List <TView> FindAllWhere <TEntity, TView>(this ICommandBus bus, object objectInstance, string binary = "AND") { return(FindAllWhere <TEntity, TView>(bus, WhereParameters.Parse(bus.GetDbEngine(), objectInstance, binary))); }
/// <summary> /// 执行一个一个获取查询条件的数据表行数的命令模型。 /// </summary> /// <typeparam name="TEntity">实体的数据类型。</typeparam> /// <param name="bus">命令总线。</param> /// <param name="objectInstance">匿名参数集合实例。</param> /// <param name="binary">二元运算符。</param> /// <returns>返回数据的行数。</returns> public static long RowCount <TEntity>(this ICommandBus bus, object objectInstance, string binary = "AND") { return(RowCount <TEntity>(bus, WhereParameters.Parse(bus.GetDbEngine(), objectInstance, binary))); }
/// <summary> /// 执行一个查询条件是否存在的命令模型。 /// </summary> /// <typeparam name="TEntity">实体的数据类型。</typeparam> /// <param name="bus">命令总线。</param> /// <param name="objectInstance">匿名参数集合实例。</param> /// <param name="binary">二元运算符。</param> /// <returns>返回一个值,表示数据是否存在。</returns> public static bool ExistsWhere <TEntity>(this ICommandBus bus, object objectInstance, string binary = "AND") { return(ExistsWhere <TEntity>(bus, WhereParameters.Parse(bus.GetDbEngine(), objectInstance, binary))); }
/// <summary> /// 执行一个条件的修改的命令模型。 /// </summary> /// <typeparam name="TEntity">实体的数据类型。</typeparam> /// <param name="bus">命令总线。</param> /// <param name="entity">实体的实例。</param> /// <param name="objectInstance">匿名参数集合实例。</param> /// <param name="binary">二元运算符。</param> /// <returns>返回受影响的行。</returns> public static int ModifyWhere <TEntity>(this ICommandBus bus, object entity, object objectInstance, string binary = "AND") { return(ModifyWhere <TEntity>(bus, entity, WhereParameters.Parse(bus.GetDbEngine(), objectInstance, binary))); }
/// <summary> /// 执行一个以分页方式查找多项的命令模型。 /// </summary> /// <typeparam name="TEntity">实体的数据类型。</typeparam> /// <typeparam name="TView">视图的数据类型。</typeparam> /// <param name="bus">命令总线。</param> /// <param name="page">分页的数据。</param> /// <param name="ps">参数集合实例。</param> /// <param name="binary">二元运算符。</param> /// <returns>返回一个实体的分页集合。</returns> public static GridData <TView> FindAllPage <TEntity, TView>(this ICommandBus bus, IPagination page, ExecuteParameterCollection ps, string binary = "AND") { return(FindAllPage <TEntity, TView>(bus, page, WhereParameters.Parse(bus.GetDbEngine(), ps, binary))); }
/// <summary> /// 执行一个以分页方式查找多项的命令模型。 /// </summary> /// <typeparam name="TEntity">实体的数据类型。</typeparam> /// <typeparam name="TView">视图的数据类型。</typeparam> /// <param name="bus">命令总线。</param> /// <param name="page">分页的数据。</param> /// <param name="objectInstance">匿名参数集合实例。</param> /// <param name="binary">二元运算符。</param> /// <returns>返回一个实体的分页集合。</returns> public static GridData <TView> FindAllPage <TEntity, TView>(this ICommandBus bus, IPagination page, object objectInstance, string binary = "AND") { return(FindAllPage <TEntity, TView>(bus, page, WhereParameters.Parse(bus.GetDbEngine(), objectInstance, binary))); }
/// <summary> /// 执行一个查找多项的命令模型。 /// </summary> /// <typeparam name="TEntity">实体的数据类型。</typeparam> /// <typeparam name="TView">视图的数据类型。</typeparam> /// <param name="bus">命令总线。</param> /// <param name="ps">参数集合实例。</param> /// <param name="binary">二元运算符。</param> /// <returns>返回一个实体的集合。</returns> public static List <TView> FindAllWhere <TEntity, TView>(this ICommandBus bus, ExecuteParameterCollection ps, string binary = "AND") { return(FindAllWhere <TEntity, TView>(bus, WhereParameters.Parse(bus.GetDbEngine(), ps, binary))); }