コード例 #1
0
 /// <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);
 }
コード例 #2
0
 /// <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);
 }
コード例 #3
0
 /// <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);
 }
コード例 #4
0
 /// <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);
 }
コード例 #5
0
 /// <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);
 }
コード例 #6
0
 /// <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));
 }
コード例 #7
0
        /// <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));
        }
コード例 #8
0
        /// <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));
        }
コード例 #9
0
 /// <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);
 }
コード例 #10
0
ファイル: SqlFactory.cs プロジェクト: glorylee/Aoite
        /// <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));
        }
コード例 #11
0
ファイル: SqlFactory.cs プロジェクト: glorylee/Aoite
        /// <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));
        }
コード例 #12
0
ファイル: SqlFactory.cs プロジェクト: glorylee/Aoite
        /// <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));
        }
コード例 #13
0
 /// <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)));
 }
コード例 #14
0
 /// <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)));
 }
コード例 #15
0
 /// <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)));
 }
コード例 #16
0
 /// <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)));
 }
コード例 #17
0
 /// <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)));
 }
コード例 #18
0
 /// <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)));
 }
コード例 #19
0
 /// <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)));
 }
コード例 #20
0
 /// <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)));
 }
コード例 #21
0
 /// <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)));
 }