88 lines
3.6 KiB
C#
88 lines
3.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using XP.Common.Database.Models;
|
|
|
|
namespace XP.Common.Database.Interfaces
|
|
{
|
|
/// <summary>
|
|
/// 通用数据库操作接口(适配任意数据库,SQLite为具体实现)
|
|
/// </summary>
|
|
public interface IDbContext : IDisposable
|
|
{
|
|
/// <summary>
|
|
/// 打开数据库连接
|
|
/// </summary>
|
|
IDbExecuteResult OpenConnection();
|
|
|
|
/// <summary>
|
|
/// 异步打开数据库连接
|
|
/// </summary>
|
|
Task<IDbExecuteResult> OpenConnectionAsync();
|
|
|
|
/// <summary>
|
|
/// 开始事务
|
|
/// </summary>
|
|
(IDbExecuteResult Result, IDbTransaction? Transaction) BeginTransaction();
|
|
|
|
/// <summary>
|
|
/// 执行增删改SQL(无返回值)
|
|
/// </summary>
|
|
/// <param name="sql">SQL语句(参数化)</param>
|
|
/// <param name="parameters">参数集合(key=参数名,value=参数值)</param>
|
|
IDbExecuteResult ExecuteNonQuery(string sql, Dictionary<string, object>? parameters = null);
|
|
|
|
/// <summary>
|
|
/// 异步执行增删改SQL
|
|
/// </summary>
|
|
Task<IDbExecuteResult> ExecuteNonQueryAsync(string sql, Dictionary<string, object>? parameters = null);
|
|
|
|
/// <summary>
|
|
/// 执行查询并返回单个值(如Count/Sum)
|
|
/// </summary>
|
|
/// <typeparam name="T">返回值类型</typeparam>
|
|
/// <param name="sql">SQL语句</param>
|
|
/// <param name="parameters">参数集合</param>
|
|
(IDbExecuteResult Result, T? Value) ExecuteScalar<T>(string sql, Dictionary<string, object>? parameters = null);
|
|
|
|
/// <summary>
|
|
/// 异步执行查询并返回单个值
|
|
/// </summary>
|
|
Task<(IDbExecuteResult Result, T? Value)> ExecuteScalarAsync<T>(string sql, Dictionary<string, object>? parameters = null);
|
|
|
|
/// <summary>
|
|
/// 执行查询并返回DataTable
|
|
/// </summary>
|
|
(IDbExecuteResult Result, DataTable? Data) ExecuteDataTable(string sql, Dictionary<string, object>? parameters = null);
|
|
|
|
/// <summary>
|
|
/// 异步执行查询并返回DataTable
|
|
/// </summary>
|
|
Task<(IDbExecuteResult Result, DataTable? Data)> ExecuteDataTableAsync(string sql, Dictionary<string, object>? parameters = null);
|
|
|
|
/// <summary>
|
|
/// 执行查询并映射为实体列表
|
|
/// </summary>
|
|
/// <typeparam name="T">实体类型(需有无参构造函数)</typeparam>
|
|
(IDbExecuteResult Result, List<T> Data) QueryList<T>(string sql, Dictionary<string, object>? parameters = null) where T : new();
|
|
|
|
/// <summary>
|
|
/// 异步执行查询并映射为实体列表
|
|
/// </summary>
|
|
Task<(IDbExecuteResult Result, List<T> Data)> QueryListAsync<T>(string sql, Dictionary<string, object>? parameters = null) where T : new();
|
|
|
|
/// <summary>
|
|
/// 执行分页查询并返回分页结果
|
|
/// </summary>
|
|
/// <typeparam name="T">实体类型</typeparam>
|
|
(IDbExecuteResult Result, PaginationResponse<T> Data) QueryPaged<T>(string sql, PaginationRequest pagination, Dictionary<string, object>? parameters = null) where T : new();
|
|
|
|
/// <summary>
|
|
/// 异步执行分页查询并返回分页结果
|
|
/// </summary>
|
|
Task<(IDbExecuteResult Result, PaginationResponse<T> Data)> QueryPagedAsync<T>(string sql, PaginationRequest pagination, Dictionary<string, object>? parameters = null) where T : new();
|
|
}
|
|
} |