業務基類對象BaseBLL


using System;
using System.Collections;
using System.Data;
using System.Text;
using System.Collections.Generic;
using System.Data.Common;
using System.Reflection;

using WHC.Pager.Entity;
using WHC.Framework.Commons;

namespace WHC.Framework.ControlUtil
{
    /// <summary>
    /// 業務基類對象
    /// </summary>
    /// <typeparam name="T">業務對象類型</typeparam>
    public class BaseBLL<T> where T : BaseEntity, new()
    {
        #region 構造函數

        private string dalName = "";   

        /// <summary>
        /// BLL業務類的全名(子類必須實現),可使用this.GetType().FullName
        /// </summary>
        protected string bllFullName;

        /// <summary>
        /// 數據訪問層程序集的清單文件的文件名,不包括其擴展名,可使用Assembly.GetExecutingAssembly().GetName().Name
        /// </summary>
        protected string dalAssemblyName;

        /// <summary>
        /// BLL命名空間的前綴(BLL.)
        /// </summary>
        protected string bllPrefix = "BLL.";

        /// <summary>
        /// 基礎數據訪問層接口對象
        /// </summary>
        protected IBaseDAL<T> baseDal = null;

        /// <summary>
        /// 默認構造函數,調用后需手動調用一次 Init() 方法進行對象初始化
        /// </summary>
        public BaseBLL() { }
              
        /// <summary>
        /// 參數賦值后,初始化相關對象
        /// </summary>
        /// <param name="bllFullName">BLL業務類的全名(子類必須實現),子類構造函數傳入this.GetType().FullName</param>
        /// <param name="dalAssemblyName">數據訪問層程序集的清單文件的文件名,不包括其擴展名。設置為NULL或默認為Assembly.GetExecutingAssembly().GetName().Name</param>
        /// <param name="bllPrefix">BLL命名空間的前綴(BLL.)</param>
        /// <param name="dbConfigName">數據庫配置項名稱</param>
        protected void Init(string bllFullName, string dalAssemblyName = null, string dbConfigName = null, string bllPrefix = "BLL.")
        {
            if (string.IsNullOrEmpty(bllFullName))
                throw new ArgumentNullException("子類未設置bllFullName業務類全名!");

            if (string.IsNullOrEmpty(dalAssemblyName))
            {
                dalAssemblyName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
            }

            //賦值,准備構建對象
            this.bllFullName = bllFullName;
            this.dalAssemblyName = dalAssemblyName;
            this.bllPrefix = bllPrefix;

            #region 根據不同的數據庫類型,構造相應的DAL層
            AppConfig config = new AppConfig();
            string dbType = config.AppConfigGet("ComponentDbType");
            if (string.IsNullOrEmpty(dbType))
            {
                dbType = "sqlserver";
            }
            dbType = dbType.ToLower();

            string DALPrefix = "";
            if (dbType == "sqlserver")
            {
                DALPrefix = "DALSQL.";
            }
            else if (dbType == "access")
            {
                DALPrefix = "DALAccess.";
            }
            else if (dbType == "oracle")
            {
                DALPrefix = "DALOracle.";
            }
            else if (dbType == "sqlite")
            {
                DALPrefix = "DALSQLite.";
            }
            else if (dbType == "mysql")
            {
                DALPrefix = "DALMySql.";
            }
            #endregion

            this.dalName = bllFullName.Replace(bllPrefix, DALPrefix);//替換中級的BLL.為DAL.,就是DAL類的全名
            baseDal = Reflect<IBaseDAL<T>>.Create(this.dalName, dalAssemblyName);//構造對應的DAL數據訪問層的對象類

            if (!string.IsNullOrEmpty(dbConfigName))
            {
                baseDal.SetDbConfigName(dbConfigName); //設置數據庫配置項名稱
            }
        }

        /// <summary>
        /// 調用前檢查baseDal是否為空引用
        /// </summary>
        protected void CheckDAL()
        {
            if (baseDal == null)
            {
                throw new ArgumentNullException("baseDal", "未能成功創建對應的DAL對象,請在BLL業務類構造函數中調用base.Init(**,**)方法,如base.Init(this.GetType().FullName, System.Reflection.Assembly.GetExecutingAssembly().GetName().Name);");
            }
        }

        #endregion

        #region 對象添加、修改、查詢接口

        /// <summary>
        /// 插入指定對象到數據庫中
        /// </summary>
        /// <param name="obj">指定的對象</param>
        /// <param name="trans">事務對象</param>
        /// <returns>執行操作是否成功。</returns>
        public virtual bool Insert(T obj, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.Insert(obj, trans);
        }

        /// <summary>
        /// 插入指定對象到數據庫中
        /// </summary>
        /// <param name="obj">指定的對象</param>
        /// <param name="trans">事務對象</param>
        /// <returns>執行成功返回新增記錄的自增長ID。</returns>
        public virtual int Insert2(T obj, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.Insert2(obj, trans);
        }

        /// <summary>
        /// 更新對象屬性到數據庫中
        /// </summary>
        /// <param name="obj">指定的對象</param>
        /// <param name="primaryKeyValue">主鍵的值</param>
        /// <param name="trans">事務對象</param>
        /// <returns>執行成功返回<c>true</c>,否則為<c>false</c></returns>
        public virtual bool Update(T obj, object primaryKeyValue, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.Update(obj, primaryKeyValue, trans);
        }

        /// <summary>
        /// 更新數據到數據表中
        /// </summary>
        /// <param name="commandType">SQL類型</param>
        /// <param name="sql">sql或者存儲過程</param>
        /// <param name="trans">事務對象</param>
        /// <returns>執行成功返回<c>true</c>,否則為<c>false</c></returns>
        public virtual bool Update(CommandType commandType, string sql, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.Update(commandType, sql, trans);
        }

        /// <summary>
        /// 更新某個表一條記錄(只適用於用單鍵,用string類型作鍵值的表)
        /// </summary>
        /// <param name="id">ID號</param>
        /// <param name="recordField">Hashtable:鍵[key]為字段名;值[value]為字段對應的值</param>
        /// <param name="targetTable">需要操作的目標表名稱</param>
        /// <param name="trans">事務對象,如果使用事務,傳入事務對象,否則為Null不使用事務</param>
        public virtual bool Update(object id, Hashtable recordField, string targetTable, DbTransaction trans)
        {
            CheckDAL();
            return baseDal.Update(id, recordField, targetTable, trans);
        }

        /// <summary>
        /// 插入或更新對象屬性到數據庫中
        /// </summary>
        /// <param name="obj">指定的對象</param>
        /// <param name="primaryKeyValue">主鍵的值</param>
        /// <param name="trans">事務對象</param>
        /// <returns>執行成功返回<c>true</c>,否則為<c>false</c></returns>
        public virtual bool InsertUpdate(T obj, object primaryKeyValue, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.InsertUpdate(obj, primaryKeyValue, trans);
        }

        /// <summary>
        /// 如果不存在記錄,則插入對象屬性到數據庫中
        /// </summary>
        /// <param name="obj">指定的對象</param>
        /// <param name="primaryKeyValue">主鍵的值</param>
        /// <param name="trans">事務對象</param>
        /// <returns>執行插入成功返回<c>true</c>,否則為<c>false</c></returns>
        public virtual bool InsertIfNew(T obj, object primaryKeyValue, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.InsertIfNew(obj, primaryKeyValue, trans);
        }

        /// <summary>
        /// 執行SQL查詢語句,返回查詢結果的所有記錄的第一個字段,用逗號分隔。
        /// </summary>
        /// <param name="sql">SQL語句</param>
        /// <param name="trans">事務對象</param>
        /// <returns>
        /// 返回查詢結果的所有記錄的第一個字段,用逗號分隔。
        /// </returns>
        public virtual string SqlValueList(string sql, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.SqlValueList(sql, trans);
        }

        /// <summary>
        /// 執行SQL查詢語句,返回所有記錄的DataTable集合。
        /// </summary>
        /// <param name="sql">SQL查詢語句</param>
        /// <param name="trans">事務對象</param>
        /// <returns></returns>
        public virtual DataTable SqlTable(string sql, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.SqlTable(sql, trans);
        }
        
        /// <summary>
        /// 執行SQL查詢語句,返回所有記錄的DataTable集合。
        /// </summary>
        /// <param name="sql">SQL查詢語句</param>
        /// <param name="parameters">參數集合</param>
        /// <param name="trans">事務對象</param>
        /// <returns></returns>
        public virtual DataTable SqlTable(string sql, DbParameter[] parameters, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.SqlTable(sql, parameters, trans);
        }

        /// <summary>
        /// 查詢數據庫,檢查是否存在指定ID的對象
        /// </summary>
        /// <param name="key">對象的ID值</param>
        /// <param name="trans">事務對象</param>
        /// <returns>存在則返回指定的對象,否則返回Null</returns>
        public virtual T FindByID(object key, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.FindByID(key, trans);
        }
                       
        /// <summary>
        /// 根據條件查詢數據庫,如果存在返回第一個對象
        /// </summary>
        /// <param name="condition">查詢的條件</param>
        /// <param name="trans">事務對象</param>
        /// <returns>指定的對象</returns>
        public virtual T FindSingle(string condition, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.FindSingle(condition, trans);
        }

        /// <summary>
        /// 根據條件查詢數據庫,如果存在返回第一個對象
        /// </summary>
        /// <param name="condition">查詢的條件</param>
        /// <param name="orderBy">排序條件</param>
        /// <param name="trans">事務對象</param>
        /// <returns>指定的對象</returns>
        public virtual T FindSingle(string condition, string orderBy, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.FindSingle(condition, orderBy, trans);
        }   
        
        /// <summary>
        /// 查找記錄表中最舊的一條記錄
        /// </summary>
        /// <param name="trans">事務對象</param>
        /// <returns></returns>
        public virtual T FindFirst(DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.FindFirst(trans);
        }

        /// <summary>
        /// 查找記錄表中最新的一條記錄
        /// </summary>
        /// <param name="trans">事務對象</param>
        /// <returns></returns>
        public virtual T FindLast(DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.FindLast(trans);
        }

        #endregion

        #region 返回集合的接口

        /// <summary>
        /// 根據ID字符串(逗號分隔)獲取對象列表
        /// </summary>
        /// <param name="idString">ID字符串(逗號分隔)</param>
         /// <param name="trans">事務對象</param>
       /// <returns>符合條件的對象列表</returns>
        public virtual List<T> FindByIDs(string idString, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.FindByIDs(idString, trans);
        }

        /// <summary>
        /// 根據條件查詢數據庫,並返回對象集合
        /// </summary>
        /// <param name="condition">查詢的條件</param>
         /// <param name="trans">事務對象</param>
        /// <returns>指定對象的集合</returns>
        public virtual List<T> Find(string condition, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.Find(condition, trans);
        }
        
        /// <summary>
        /// 根據條件查詢數據庫,並返回對象集合
        /// </summary>
        /// <param name="condition">查詢的條件</param>
        /// <param name="orderBy">排序條件</param>
         /// <param name="trans">事務對象</param>
        /// <returns>指定對象的集合</returns>
        public virtual List<T> Find(string condition, string orderBy, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.Find(condition, orderBy, trans);
        }

        /// <summary>
        /// 根據條件查詢數據庫,並返回對象集合(用於分頁數據顯示)
        /// </summary>
        /// <param name="condition">查詢的條件</param>
        /// <param name="info">分頁實體</param>
        /// <param name="trans">事務對象</param>
        /// <returns>指定對象的集合</returns>
        public virtual List<T> FindWithPager(string condition, PagerInfo info, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.FindWithPager(condition, info,trans);
        }

        /// <summary>
        /// 根據條件查詢數據庫,並返回對象集合(用於分頁數據顯示)
        /// </summary>
        /// <param name="condition">查詢的條件</param>
        /// <param name="info">分頁實體</param>
        /// <param name="fieldToSort">排序字段</param>
        /// <param name="trans">事務對象</param>
        /// <returns>指定對象的集合</returns>
        public virtual List<T> FindWithPager(string condition, PagerInfo info, string fieldToSort, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.FindWithPager(condition, info, fieldToSort, trans);
        }

        /// <summary>
        /// 根據條件查詢數據庫,並返回對象集合(用於分頁數據顯示)
        /// </summary>
        /// <param name="condition">查詢的條件</param>
        /// <param name="info">分頁實體</param>
        /// <param name="fieldToSort">排序字段</param>
        /// <param name="desc">是否降序</param>
        /// <param name="trans">事務對象</param>
        /// <returns>指定對象的集合</returns>
        public virtual List<T> FindWithPager(string condition, PagerInfo info, string fieldToSort, bool desc, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.FindWithPager(condition, info, fieldToSort, desc, trans);
        }
        
        /// <summary>
        /// 返回數據庫所有的對象集合
        /// </summary>
        /// <param name="trans">事務對象</param>
        /// <returns>指定對象的集合</returns>
        public virtual List<T> GetAll(DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.GetAll(trans);
        }

        /// <summary>
        /// 返回數據庫所有的對象集合
        /// </summary>
        /// <param name="orderBy">自定義排序語句,如Order By Name Desc;如不指定,則使用默認排序</param>
        /// <param name="trans">事務對象</param>
        /// <returns>指定對象的集合</returns>
        public virtual List<T> GetAll(string orderBy, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.GetAll(orderBy, trans);
        }
        
        /// <summary>
        /// 返回數據庫所有的對象集合(用於分頁數據顯示)
        /// </summary>
        /// <param name="info">分頁實體信息</param>
        /// <param name="trans">事務對象</param>
        /// <returns>指定對象的集合</returns>
        public virtual List<T> GetAll(PagerInfo info, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.GetAll(info, trans);
        }

        /// <summary>
        /// 返回數據庫所有的對象集合(用於分頁數據顯示)
        /// </summary>
        /// <param name="info">分頁實體信息</param>
        /// <param name="fieldToSort">排序字段</param>
        /// <param name="desc">是否降序</param>
        /// <param name="trans">事務對象</param>
        /// <returns>指定對象的集合</returns>
        public virtual List<T> GetAll(PagerInfo info, string fieldToSort, bool desc, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.GetAll(info, fieldToSort, desc, trans);
        }

        /// <summary>
        /// 返回所有記錄到DataTable集合中
        /// </summary>
        /// <param name="trans">事務對象</param>
        /// <returns></returns>
        public virtual DataTable GetAllToDataTable(DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.GetAllToDataTable(trans);
        }

        /// <summary>
        /// 返回所有記錄到DataTable集合中
        /// </summary>
        /// <param name="orderBy">自定義排序語句,如Order By Name Desc;如不指定,則使用默認排序</param>
        /// <param name="trans">事務對象</param>
        /// <returns></returns>
        public virtual DataTable GetAllToDataTable(string orderBy, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.GetAllToDataTable(orderBy, trans);
        }

         /// <summary>
        /// 根據分頁條件,返回DataSet對象
        /// </summary>
        /// <param name="info">分頁條件</param>
        /// <param name="trans">事務對象</param>
        /// <returns></returns>
        public virtual DataTable GetAllToDataTable(PagerInfo info, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.GetAllToDataTable(info, trans);
        }

        /// <summary>
        /// 根據分頁條件,返回DataSet對象
        /// </summary>
        /// <param name="info">分頁條件</param>
        /// <param name="fieldToSort">排序字段</param>
        /// <param name="trans">事務對象</param>
        /// <param name="desc">是否降序</param>
        /// <returns></returns>
        public virtual DataTable GetAllToDataTable(PagerInfo info, string fieldToSort, bool desc, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.GetAllToDataTable(info, fieldToSort, desc, trans);
        }

        /// <summary>
        /// 根據查詢條件,返回記錄到DataTable集合中
        /// </summary>
        /// <param name="condition">查詢條件</param>
        /// <param name="trans">事務對象</param>
        /// <returns></returns>
        public virtual DataTable FindToDataTable(string condition, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.FindToDataTable(condition, trans);
        }

        /// <summary>
        /// 根據查詢條件,返回記錄到DataTable集合中
        /// </summary>
        /// <param name="condition">查詢條件</param>
        /// <param name="pagerInfo">分頁條件</param>
        /// <param name="trans">事務對象</param>
        /// <returns></returns>
        public virtual DataTable FindToDataTable(string condition, PagerInfo pagerInfo, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.FindToDataTable(condition, pagerInfo, trans);
        }

        /// <summary>
        /// 根據條件查詢數據庫,並返回DataTable集合(用於分頁數據顯示)
        /// </summary>
        /// <param name="condition">查詢的條件</param>
        /// <param name="info">分頁實體</param>
        /// <param name="fieldToSort">排序字段</param>
        /// <param name="desc">是否降序</param>
        /// <param name="trans">事務對象</param>
        /// <returns>指定DataTable的集合</returns>
        public virtual DataTable FindToDataTable(string condition, PagerInfo info, string fieldToSort, bool desc, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.FindToDataTable(condition, info, fieldToSort, desc, trans);
        }

        /// <summary>
        /// 獲取字段列表
        /// </summary>
        /// <param name="fieldName">字段名稱</param>
        /// <param name="trans">事務對象</param>
        /// <returns></returns>
        public virtual List<string> GetFieldList(string fieldName, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.GetFieldList(fieldName, trans);
        }

        /// <summary>
        /// 根據條件,獲取某字段數據字典列表
        /// </summary>
        /// <param name="fieldName">字段名稱</param>
        /// <param name="trans">事務對象</param>
        /// <returns></returns>
        public List<string> GetFieldListByCondition(string fieldName, string condition, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.GetFieldListByCondition(fieldName, condition, trans);
        }

        /// <summary>
        /// 根據條件,從視圖里面獲取記錄
        /// </summary>
        /// <param name="viewName">視圖名稱</param>
        /// <param name="condition">查詢條件</param>
        /// <param name="trans">事務對象</param>
        /// <returns></returns>
        public virtual DataTable FindByView(string viewName, string condition, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.FindByView(viewName, condition, trans);
        }
               
        /// <summary>
        /// 根據條件,從視圖里面獲取記錄
        /// </summary>
        /// <param name="viewName">視圖名稱</param>
        /// <param name="condition">查詢條件</param>
        /// <param name="sortField">排序字段</param>
        /// <param name="isDescending">是否為降序</param>
        /// <param name="trans">事務對象</param>
        /// <returns></returns>
        public virtual DataTable FindByView(string viewName, string condition, string sortField, bool isDescending, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.FindByView(viewName, condition, sortField, isDescending, trans);
        }
                       
        /// <summary>
        /// 根據條件,從視圖里面獲取記錄
        /// </summary>
        /// <param name="viewName">視圖名稱</param>
        /// <param name="condition">查詢條件</param>
        /// <param name="sortField">排序字段</param>
        /// <param name="isDescending">是否為降序</param>
        /// <param name="info">分頁條件</param>
        /// <param name="trans">事務對象</param>
        /// <returns></returns>
        public virtual DataTable FindByViewWithPager(string viewName, string condition, string sortField, bool isDescending, PagerInfo info, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.FindByViewWithPager(viewName, condition, sortField, isDescending, info, trans);
        }

        #endregion

        #region 基礎接口
                       
        /// <summary>
        /// 獲取表的所有記錄數量
        /// </summary>
        /// <param name="trans">事務對象</param>
        /// <returns></returns>
        public virtual int GetRecordCount(DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.GetRecordCount(trans);
        }

        /// <summary>
        /// 獲取表的指定條件記錄數量
        /// </summary>
        /// <param name="trans">事務對象</param>
        /// <returns></returns>
        public virtual int GetRecordCount(string condition, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.GetRecordCount(condition, trans);
        }

        /// <summary>
        /// 根據condition條件,判斷是否存在記錄
        /// </summary>
        /// <param name="condition">查詢的條件</param>
        /// <param name="trans">事務對象</param>
        /// <returns>如果存在返回True,否則False</returns>
        public virtual bool IsExistRecord(string condition, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.IsExistRecord(condition, trans);
        }

        /// <summary>
        /// 查詢數據庫,檢查是否存在指定鍵值的對象
        /// </summary>
        /// <param name="fieldName">指定的屬性名</param>
        /// <param name="key">指定的值</param>
        /// <param name="trans">事務對象</param>
        /// <returns>存在則返回<c>true</c>,否則為<c>false</c></returns>
        public virtual bool IsExistKey(string fieldName, object key, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.IsExistKey(fieldName, key, trans);
        }
                        
        /// <summary>
        /// 根據主鍵和字段名稱,獲取對應字段的內容
        /// </summary>
        /// <param name="key">指定對象的ID</param>
        /// <param name="fieldName">字段名稱</param>
        /// <param name="trans">事務對象</param>
        /// <returns></returns>
        public virtual string GetFieldValue(object key, string fieldName, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.GetFieldValue(key, fieldName, trans);
        }

        /// <summary>
        /// 根據指定對象的ID,從數據庫中刪除指定對象
        /// </summary>
        /// <param name="key">指定對象的ID</param>
        /// <param name="trans">事務對象</param>
        /// <returns>執行成功返回<c>true</c>,否則為<c>false</c></returns>
        public virtual bool Delete(object key, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.Delete(key, trans);
        }  

        /// <summary>
        /// 根據指定條件,從數據庫中刪除指定對象
        /// </summary>
        /// <param name="condition">刪除記錄的條件語句</param>
        /// <param name="trans">事務對象</param>
        /// <returns>執行成功返回<c>true</c>,否則為<c>false</c></returns>
        public virtual bool DeleteByCondition(string condition, DbTransaction trans = null)
        {
            CheckDAL();
            return baseDal.DeleteByCondition(condition, trans);
        }
     
        /// <summary>
        /// 打開數據庫連接,並創建事務對象
        /// </summary>
        public virtual DbTransaction CreateTransaction()
        {
            CheckDAL();
            return baseDal.CreateTransaction();
        }
                
        /// <summary>
        /// 打開數據庫連接,並創建事務對象
        /// </summary>
        /// <param name="level">事務級別</param>
        public virtual DbTransaction CreateTransaction(IsolationLevel level)
        {
            CheckDAL();
            return baseDal.CreateTransaction(level);
        }

        #endregion

        #region 其他接口
        /// <summary>
        /// 初始化數據庫表名
        /// </summary>
        /// <param name="tableName">數據庫表名</param>
        public virtual void InitTableName(string tableName)
        {
            CheckDAL();
            baseDal.InitTableName(tableName);
        }

        /// <summary>
        /// 獲取表的字段名稱和數據類型列表
        /// </summary>
        /// <returns></returns>
        public virtual DataTable GetFieldTypeList()
        {
            CheckDAL();
            return baseDal.GetFieldTypeList();
        }

        /// <summary>
        /// 獲取字段中文別名(用於界面顯示)的字典集合
        /// </summary>
        /// <returns></returns>
        public virtual Dictionary<string, string> GetColumnNameAlias()
        {
            CheckDAL();
            return baseDal.GetColumnNameAlias();
        }

        /// <summary>
        /// 獲取指定字段的報表數據
        /// </summary>
        /// <param name="fieldName">表字段</param>
        /// <param name="condition">查詢條件</param>
        /// <returns></returns>
        public virtual DataTable GetReportData(string fieldName, string condition)
        {
            CheckDAL();
            return baseDal.GetReportData(fieldName, condition);
        } 
        #endregion
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM