using System; using System.Collections.Generic; using System.Data.Common; using System.Linq.Expressions; using System.Threading.Tasks; namespace FreeSql { public interface IDelete where T1 : class { /// /// 指定事务对象 /// /// /// IDelete WithTransaction(DbTransaction transaction); /// /// 指定事务对象 /// /// /// IDelete WithConnection(DbConnection connection); /// /// lambda表达式条件,仅支持实体基础成员(不包含导航对象) /// /// lambda表达式条件 /// IDelete Where(Expression> exp); /// /// 原生sql语法条件,Where("id = ?id", new { id = 1 }) /// /// sql语法条件 /// 参数 /// IDelete Where(string sql, object parms = null); /// /// 传入实体,将主键作为条件 /// /// 实体 /// IDelete Where(T1 item); /// /// 传入实体集合,将主键作为条件 /// /// 实体集合 /// IDelete Where(IEnumerable items); /// /// 子查询是否存在 /// /// /// 子查询 /// 不存在 /// IDelete WhereExists(ISelect select, bool notExists = false) where TEntity2 : class; /// /// 传入动态对象如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} /// /// 主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合 /// IDelete WhereDynamic(object dywhere); /// /// 设置表名规则,可用于分库/分表,参数1:默认表名;返回值:新表名; /// /// /// IDelete AsTable(Func tableRule); /// /// 动态Type,在使用 Delete<object> 后使用本方法,指定实体类型 /// /// /// IDelete AsType(Type entityType); /// /// 返回即将执行的SQL语句 /// /// string ToSql(); /// /// 执行SQL语句,返回影响的行数 /// /// int ExecuteAffrows(); Task ExecuteAffrowsAsync(); /// /// 执行SQL语句,返回被删除的记录 /// /// List ExecuteDeleted(); Task> ExecuteDeletedAsync(); } }