ASP.NET開發,從二層至三層,至面向對象 (3)


繼續上一篇《ASP.NET開發,從二層至三層,至面向對象 (2)http://www.cnblogs.com/insus/p/3825805.html 。我們學會了怎樣創建對象,把BizBase類從頁面級分離,解耦合度。親的更親,疏的更疏。

上面使用的是Access數據,將達不到擴展與升級的要求。程序在發展的同時,有可能會轉向SQL數據庫,或是有些模塊外包。在這情形出現,我們需要定制設計規范接口。接手此軟開發的團隊,所在邏輯處層中,實作這個接口即可。

下面Insus.NET嘗試寫一個接口,在程序中應用SQL Server的團隊,不管是在邏輯層中寫SQL語句的,還是在邏輯層傳入參數引用存儲過程的,均可實現統一的接口。




上面標記2的返回DbdataReader函數,是為了它能讓Access數據庫(System.Data.OleDb.OleDbDataReader)與SQL數據庫(System.Data.SqlClient.SqlDataReader)均能實作。由於這兩者均是繼承DbDataReader類。

這樣的話,以前寫的Access數據庫的邏輯類BizBase,實作這個接口,得修改一下,才符合接口的標准:



下面,Insus.NET實現一個邏輯類,是方便用用戶在程序的中習慣寫SQL語句的對象:


接下來,Insus.NET再實現一個邏輯處理類,也是程序與數據庫互通的,不過它是配合SQL Server數據庫的存儲過程來的。當然使用存儲過程,它自然有參數出現。准備之前,先寫一個類Insus.NET.Parameter:

 

 現在就可以創建這個邏輯類了,它有實作接口IBiz:



上面有寫兩個public的property,將是用來給程序對象傳入引用的哪一個存儲過程,以及參數。如果所引用的存儲過程沒有參數,傳入null即可。

        private string _ProcedureName;
        private List<Parameter> _Parameters;

        public string ProcedureName
        {
            get { return _ProcedureName; }
            set { _ProcedureName = value; }
        }
        public List<Parameter> Parameters
        {
            get { return _Parameters; }
            set { _Parameters = value; }
        }
View Code


還有一個私有方法,它是用來創建參數的。如果size傳入為-1的話,系統將使用默認數據類型長度。

 private SqlParameter CreateParameter(string parameterName, SqlDbType dbType, Int32 size, object value)
        {
            SqlParameter sqlParameter;
            if (size > 0)
                sqlParameter = new SqlParameter(parameterName, dbType, size);
            else
                sqlParameter = new SqlParameter(parameterName, dbType);

            sqlParameter.Direction = ParameterDirection.Input;
            sqlParameter.Value = value;

            return sqlParameter;
        }
View Code


BizBaseSqlSp這個類別中,每個方法或是函數,均有幾行代碼冗余:



解決冗余,可以把它抽取出來,寫一個私有的方法:



重構好之后的BizBaseSQLSp類:

 
如果你不想多數據庫集成,你完全抽取其中一個邏輯處理類,作為你的類庫。特別是最后一個。不必再問下面這個類庫的原代碼了:http://www.cnblogs.com/insus/archive/2013/05/23/3096045.html
當然,它肯定在asp.net MVC也能用得到。

 
本篇演示源程序(Access DB; .NET Framework 4.0;):
http://download.cnblogs.com/insus/ASPDOTNET/Asp_OOP3.rar


注:文章太長了,寫成續集,請關注......

 


免責聲明!

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



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