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