using Microsoft.EntityFrameworkCore.Storage;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq.Expressions;
using APT.Infrastructure.Core;
namespace APT.Infrastructure.Api
{
///
/// 领域服务接口
///
///
///
///
public interface IDomainService : IDependInject
{
///
/// 对数据库执行给定的 DDL/DML 命令。
///
/// 命令字符串
/// 参数
/// 受影响的行数
int ExecuteSqlCommand(string sql, params object[] parameters);
///
/// 对数据库执行给定的 DDL/DML 命令。
///
/// 事务行为
/// 命令字符串
/// 参数
/// 受影响的行数
int ExecuteSqlCommand(TransactionalBehavior transactionalBehavior, string sql, params object[] parameters);
///
/// 对数据库执行给定的 DDL/DML 命令返回reader。
///
/// 命令字符串
/// reader委托
void ExecuteReader(string sql, ReaderColumn[] readerColumns, Action readerAction);
///
/// 对数据库执行给定的 DDL/DML 命令返回reader。
///
/// 命令字符串
/// 参数
/// reader委托
void ExecuteReader(string sql, ReaderColumn[] readerColumns, DbParameter[] parameters, Action readerAction);
///
/// 对数据库执行给定的 DDL/DML 命令返回reader。
///
/// 命令类型
/// 命令字符串
/// 参数
/// reader委托
void ExecuteReader(CommandType commandType, string sql, ReaderColumn[] readerColumns, DbParameter[] parameters, Action readerAction);
///
/// 创建一个原始 SQL 查询,该查询将返回给定泛型类型的元素。
///
/// 查询所返回对象的类型
/// SQL 查询字符串
/// 要应用于 SQL 查询字符串的参数
///
//IEnumerable SqlQuery(string sql, params object[] parameters);
///
/// 创建一个原始 SQL 查询,该查询将返回给定类型的元素。
///
/// 查询所返回对象的类型
/// SQL 查询字符串
/// 要应用于 SQL 查询字符串的参数
///
IEnumerable SqlQuery(Type elementType, string sql, ReaderColumn[] readerColumns, params Object[] parameters);
///
/// 对数据库执行给定的 DDL/DML 命令。
///
/// 命令类型
/// 命令字符串
/// 参数
///
int ExecuteNonQuery(CommandType commandType, string sql, ReaderColumn[] readerColumns, DbParameter[] parameters);
///
/// 获取数据库连接对象
///
/// 数据库类型
/// 连接字符串
DbConnection InitDbConnection(DataBaseType dataBaseType, string connString);
///
/// 执行查询,并返回查询所返回的结果集中第一行的第一列。 所有其他的列和行将被忽略。
///
/// 数据库类型
/// 连接字符串
/// sql 类型
/// sql
/// 参数
object ExecuteScalarByConn(DataBaseType dataBaseType, string connString, CommandType commandType,
string sql, DbParameter[] dbParameters);
///
/// 执行查询,并返回查询所返回的结果集中第一行的第一列。 所有其他的列和行将被忽略。
///
/// 数据库类型
/// 数据库连接对象
/// sql 类型
/// sql
/// 参数
/// 是否关闭连接
object ExecuteScalarByConn(DataBaseType dataBaseType, DbConnection conn, CommandType commandType,
string sql, bool close = true, params DbParameter[] dbParameters);
///
/// 根据数据库连接对数据库执行给定的 DDL/DML 命令获取Reader。
///
/// 数据库类型
/// 连接对象
/// sql 类型
/// sql
/// 参数
/// 分页索引 从1开始
/// 每页条数 必填
/// 执行委托
/// 是否关闭连接
void ExecuteReaderPageByConn(DataBaseType dataBaseType, DbConnection conn, CommandType commandType,
string sql, DbParameter[] dbParameters, int pageIndex, int pageLimit, Action readerAction
, bool close = true);
///
/// 根据数据库连接对数据库执行给定的 DDL/DML 命令获取Reader。
///
/// 数据库类型
/// 连接对象
/// 指令类型
/// SQL语句
/// 参数
/// 是否关闭连接
/// 委托
void ExecuteReaderByConn(DataBaseType dataBaseType, DbConnection conn, CommandType commandType, string sql,
DbParameter[] dbParameters, Action readerAction, bool close = true);
///
/// 根据数据库连接对数据库执行给定的 DDL/DML 命令。
///
/// 数据库类型
/// 连接字符串
/// sql 类型
/// sql
/// 参数
void ExecuteNonQueryByConn(DataBaseType dataBaseType, string connString, CommandType commandType,
string sql, DbParameter[] dbParameters);
///
/// 根据数据库连接对数据库执行给定的 DDL/DML 命令。
///
/// 数据库类型
/// 连接字符串
/// sql 类型
/// sql
/// 参数
void ExecuteNonQueryByConn(DataBaseType dataBaseType, DbConnection conn, CommandType commandType, string sql,
DbParameter[] dbParameters, bool close = true);
///
/// 根据数据库连接对数据库执行给定的 DDL/DML 命令获取Reader。
///
/// 数据库类型
/// 连接字符串
/// sql 类型
/// sql
/// 参数
/// 执行委托
void ExecuteReaderByConn(DataBaseType dataBaseType, string connString, CommandType commandType, string sql,
DbParameter[] dbParameters, Action readerAction);
///
/// 根据数据库连接对数据库执行给定的 DDL/DML 命令获取Reader。
///
/// 数据库类型
/// 连接字符串
/// sql 类型
/// sql
/// 参数
/// 分页索引 从1开始
/// 每页条数 必填
/// 执行委托
void ExecuteReaderPageByConn(DataBaseType dataBaseType, string connString, CommandType commandType,
string sql, DbParameter[] dbParameters, int pageIndex, int pageLimit, Action readerAction);
///
/// 根据数据库连接对数据库执行给定的 DDL/DML 命令获取数据总条数。
///
/// 数据库类型
/// 连接字符串
/// sql 类型
/// sql
/// 参数
/// 数据总条数
int GetSqlCountByConn(DataBaseType dataBaseType, string connString, CommandType commandType,
string sql, DbParameter[] dbParameters);
string GetRuleCodes(CodeRuleParam param);
}
}