old_flsystem/类库/Api.Framework/Easy4/Variety/OrmConfig.cs

160 lines
4.4 KiB
C#
Raw Normal View History

2022-09-20 03:10:29 +00:00
using System;
using System.Data;
using System.Linq;
using Easy4net.DBUtility;
namespace Easy4net.Variety
{
/// <summary>
/// ORM配置基类
/// </summary>
public abstract class OrmConfig
{
/// <summary>
/// 获取当前支持的数据库类型
/// </summary>
public abstract DatabaseType DbType { get; }
/// <summary>
/// 获取对应的数据库参数字符前缀
/// </summary>
public abstract string DbParamChar { get; }
/// <summary>
/// 获取数据库连接字符串
/// </summary>
public string ConnectionString { get; protected set; }
/// <summary>
/// 创建一个数据库链接对象
/// </summary>
/// <returns></returns>
internal abstract IDbConnection CreateDbConnection();
/// <summary>
/// 创建一个数据库命令对象
/// </summary>
/// <returns></returns>
internal abstract IDbCommand CreateDbCommand();
/// <summary>
/// 创建数据库适配器对象
/// </summary>
/// <returns></returns>
internal abstract IDbDataAdapter CreateDataAdapter();
/// <summary>
/// 根据传入的命令对象创建适配器对象
/// </summary>
/// <param name="aCmd"></param>
/// <returns></returns>
internal abstract IDbDataAdapter CreateDataAdapter(IDbCommand aCmd);
/// <summary>
/// 打开数据库连接并创建事物对象
/// </summary>
/// <returns></returns>
internal virtual IDbTransaction CreateDbTransaction()
{
IDbConnection conn = CreateDbConnection();
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
return conn.BeginTransaction();
}
/// <summary>
/// 打开数据库连接并创建指定连接行为的事物对象
/// </summary>
/// <param name="aLevel"></param>
/// <returns></returns>
internal virtual IDbTransaction CreateDbTransaction(IsolationLevel aLevel)
{
IDbConnection conn = CreateDbConnection();
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
return conn.BeginTransaction(aLevel);
}
/// <summary>
/// 创建数据库参数对象
/// </summary>
/// <returns></returns>
public abstract IDbDataParameter CreateDbParameter();
/// <summary>
/// 根据参数名与值创建数据库参数对象
/// </summary>
/// <param name="aPrmName"></param>
/// <param name="aValue"></param>
/// <returns></returns>
public virtual IDbDataParameter CreateDbParameter(string aPrmName, object aValue)
{
IDbDataParameter param = CreateDbParameter();
param.ParameterName = aPrmName;
param.Value = aValue;
return param;
}
/// <summary>
/// 根据参数名与值及参数值类型创建一个数据库参数对象
/// </summary>
/// <param name="aPrmName"></param>
/// <param name="aValue"></param>
/// <param name="aDbType">参数值的数据类型</param>
/// <returns></returns>
public virtual IDbDataParameter CreateDbParameter(string aPrmName, object aValue, DbType aDbType)
{
IDbDataParameter param = CreateDbParameter(aPrmName, aValue);
param.DbType = aDbType;
return param;
}
/// <summary>
/// 根据参数名与值及参数输入输出类型创建一个数据库参数对象
/// </summary>
/// <param name="aPrmName"></param>
/// <param name="aValue"></param>
/// <param name="aDirection"></param>
/// <returns></returns>
public virtual IDbDataParameter CreateDbParameter(string aPrmName, object aValue, ParameterDirection aDirection)
{
IDbDataParameter param = CreateDbParameter(aPrmName, aValue);
param.Direction = aDirection;
return param;
}
/// <summary>
/// 根据参数名,值,参数大小,参数方向类型创建一个参数对象
/// </summary>
/// <param name="aPrmName"></param>
/// <param name="aValue"></param>
/// <param name="aDbType"></param>
/// <param name="aSize"></param>
/// <param name="aDirection"></param>
/// <returns></returns>
public virtual IDbDataParameter CreateDbParameter(string aPrmName, object aValue, DbType aDbType, int aSize, ParameterDirection aDirection)
{
IDbDataParameter param = CreateDbParameter(aPrmName, aValue, aDbType);
param.Size = aSize;
param.Direction = aDirection;
return param;
}
/// <summary>
/// 格式化字段名
/// </summary>
/// <param name="aColumnName"></param>
/// <returns></returns>
internal abstract string FormatColumnName(string aColumnName);
/// <summary>
/// 生成获取自增长列的新添加值的SQL语句
/// </summary>
/// <returns></returns>
internal abstract string GetAutoSql();
}
}