/// <summary> /// 异步执行一个移除的命令模型。 /// </summary> /// <typeparam name="TEntity">实体的数据类型。</typeparam> /// <param name="bus">命令总线。</param> /// <param name="entityOrPKValues">实体的实例对象,在删除命令中 <paramref name="entityOrPKValues"/> 可以是主键的值(表只有一个主键,值允许是一个数组,表示删除多条记录),也可以是匿名对象的部分成员(<paramref name="entityOrPKValues"/> 属性成员和 <typeparamref name="TEntity"/> 属性成员必须一致)。</param> /// <param name="tunnel">用于个性化表名和命令的暗道,可以为 null 值。</param> /// <returns>受影响的行。</returns> public static Task <int> RemoveAnonymousAsync <TEntity>(this ICommandBus bus, object entityOrPKValues, ICommandTunnel tunnel = null) { if (bus == null) { throw new ArgumentNullException(nameof(bus)); } return(Filter(bus, DbExtensions.GetRemoveWhere <TEntity>(bus.GetDbEngine(), entityOrPKValues)).RemoveAsync <TEntity>(tunnel)); }
/// <summary> /// 异步执行一个修改的命令模型。 /// </summary> /// <typeparam name="TEntity">实体的数据类型。</typeparam> /// <param name="bus">命令总线。</param> /// <param name="entity">实体的实例。</param> /// <param name="tunnel">用于个性化表名和命令的暗道,可以为 null 值。</param> /// <returns>受影响的行。</returns> public static Task <int> ModifyAnonymousAsync <TEntity>(this ICommandBus bus, object entity, ICommandTunnel tunnel = null) => Filter(bus, DbExtensions.GetModifyKeyValues <TEntity>(entity)).ModifyAsync <TEntity>(entity, tunnel);
/// <summary> /// 异步执行一个查询主键是否存在的命令模型。 /// </summary> /// <typeparam name="TEntity">实体的数据类型。</typeparam> /// <param name="bus">命令总线。</param> /// <param name="keyName">主键的列名。</param> /// <param name="keyValue">主键的列值。</param> /// <param name="tunnel">用于个性化表名和命令的暗道,可以为 null 值。</param> /// <returns>表示数据是否存在。</returns> public static Task <bool> ExistsAsync <TEntity>(this ICommandBus bus, string keyName, object keyValue, ICommandTunnel tunnel = null) => Filter(bus, DbExtensions.GetKeyValues <TEntity>(keyName, keyValue)).ExistsAsync <TEntity>(tunnel);
/// <summary> /// 异步执行一个查找单项的命令模型。 /// </summary> /// <typeparam name="TEntity">实体的数据类型。</typeparam> /// <typeparam name="TView">视图的数据类型。</typeparam> /// <param name="bus">命令总线。</param> /// <param name="keyName">主键的列名。可以为 null 值。</param> /// <param name="keyValue">主键的列值。</param> /// <param name="select">视图选择器。可以为 null 值,表示不采用匿名对象的方式。</param> /// <param name="tunnel">用于个性化表名和命令的暗道,可以为 null 值。</param> /// <returns>实体。</returns> public static Task <TView> FindOneAsync <TEntity, TView>(this ICommandBus bus, string keyName, object keyValue, Func <TEntity, TView> select, ICommandTunnel tunnel = null) => Filter(bus, DbExtensions.GetKeyValues <TEntity>(keyName, keyValue)).FindOneAsync(select, tunnel);
/// <summary> /// 创建一个筛选执行器。 /// </summary> /// <param name="bus">命令总线。</param> /// <param name="ps">参数集合实例。</param> /// <param name="binary">二元运算符。</param> /// <returns>筛选执行器。</returns> public static IFilterExecutor Filter(this ICommandBus bus, ExecuteParameterCollection ps, string binary = "AND") => Filter(bus, DbExtensions.CreateWhere(bus.GetDbEngine(), ps, binary), ps);
/// <summary> /// 执行一个查找单项的命令模型。 /// </summary> /// <typeparam name="TEntity">实体的数据类型。</typeparam> /// <typeparam name="TView">视图的数据类型。</typeparam> /// <param name="bus">命令总线。</param> /// <param name="keyName">主键的列名。可以为 null 值。</param> /// <param name="keyValue">主键的列值。</param> /// <param name="tunnel">用于个性化表名和命令的暗道,可以为 null 值。</param> /// <returns>实体。</returns> public static TView FindOne <TEntity, TView>(this ICommandBus bus, string keyName, object keyValue, ICommandTunnel tunnel = null) => Filter(bus, DbExtensions.GetKeyValues <TEntity>(keyName, keyValue)).FindOne <TEntity, TView>(tunnel);