Files
XplorePlane/XP.Common/Database/Interfaces/IDbContext.cs
T

88 lines
3.5 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();
}
}