IDbContext

IDbContext

数据库上下文接口,包含创建查询对象(IQuery)、插入数据、更新数据和删除数据等基本操作。

public interface IDbContext : IDisposable
{
    /* 获取关联的会话,通过该对象可以执行基本的 ado.net 操作(包括事务) */
    IDbSession Session { get; }

    /* 获取 IQuery 对象。主要数据查询的入口 */
    IQuery<TEntity> Query<TEntity>() where TEntity : new();
    /* 根据主键查询数据 */
    TEntity QueryByKey<TEntity>(object key, bool tracking = false) where TEntity : new();

    /* 原生 sql 查询,支持存储过程 */
    IEnumerable<T> SqlQuery<T>(string sql, params DbParam[] parameters) where T : new();
    IEnumerable<T> SqlQuery<T>(string sql, CommandType cmdType, params DbParam[] parameters) where T : new();

    /* 传入一个实体对象,插入数据。返回传入的实体对象(如果实体拥有自增列,会自动将自增值设置到实体相应的属性上) */
    TEntity Insert<TEntity>(TEntity entity);

    /* 传入一个 lambda 表达式树,向表插入指定的字段数据,返回主键值(如果主键是自增,则返回的就是自增值) */
    object Insert<TEntity>(Expression<Func<TEntity>> body);

    /* 传入一个实体,更新单条数据。返回受影响的行数 */
    int Update<TEntity>(TEntity entity);

    /* 传入 condition 条件和 body 表达式树,更新满足 condition 条件的指定的字段。返回受影响的行数 */
    int Update<TEntity>(Expression<Func<TEntity, bool>> condition, Expression<Func<TEntity, TEntity>> body);

    /* 传入一个实体,删除单条数据。返回受影响的行数 */
    int Delete<TEntity>(TEntity entity);
    /* 传入 condition 条件表达式树,删除满足 condition 条件的数据。返回受影响的行数 */
    int Delete<TEntity>(Expression<Func<TEntity, bool>> condition);
    /* 根据主键删除数据 */
    int DeleteByKey<TEntity>(object key);

    /* 传入一个实体,让当前上下文跟踪该实体的属性变化。调用 'int Update<TEntity>(TEntity entity)' 方法更新数据时,只会更新实体被修改过的属性。 */
    void TrackEntity(object entity);
}