簡化基於資料庫的DotNet應用程式開發

來源:互聯網
上載者:User

分析

要做一個基於資料庫的應用程式,我們有大量的重複勞動要去做,建表,寫增 刪改查的SQL語句,寫與資料庫表對應的實體類,寫執行SQL的c#代碼,寫添加、 修改、列表、詳細頁面等等。這些活動都是圍繞著一個個都資料表來開展的, 在.NET領域有很多的OR Mapping的方案,但好多方案用起來好用,但原理很複雜 ,而且效能也不好把握,所以我們可以做一個輕型的ORM方案。有了ORM架構,根 據資料表寫c#實體類這些勞動,其實也可以寫一個代碼產生器來幫我們產生,甚 至代碼產生器還能幫我們產生一些介面的代碼。我們大概需要解決如下問題

1、我們要有一個通用的資料庫操作協助類,類似微軟的DAAB,但最好能支援 多種資料庫;

2、我們要有一個使用簡單的orm架構,能方便的用c#代碼來進行資料庫存取操 作,而且要盡量保證效能,比如使用參數化查詢;

3、我們要有一個代碼產生器協助我們解決一些重複性勞動,比如產生實體類 ,產生調用預存程序的c#代碼等;

圍繞這3個問題,我們一一來展開

一、通用的資料庫吃操作協助類

ADO.NET 2.0為我們訪問資料庫提供了一套與具體資料庫無關的模型,其核心 類是DbProviderFactory,它遵循了Provider模式,就是把對各種資料庫的操作抽 象出一個Provider,再由各種資料庫去寫與具體資料庫相關的Provider,然後通 過配置在運行時方便的切換資料庫,而盡量少的不修改商務邏輯層的代碼,業務 邏輯層依賴的是抽象的Provider。這也是典型的依賴倒置,就是說商務邏輯說我 需要哪些介面,我依賴這些介面,而讓別人去實現這些介面,在啟動並執行時候再去 載入調用實現這些介面的具體類。

為了提高效能,減少SQLSERVER執行計畫的重編譯,我們盡量使用參數化的查 詢,而一個固定的語句或者預存程序它的ADO.NET參數是固定的,所以我們可以把 這些參數緩衝起來,避免每次執行SQL語句都創新新的參數對象。另外oledb的 ado.net provider的參數是不能命名的,所以給參數賦值要按順序賦值。

為了使用方便,我們為執行SQL語句提供如下的API

public System.Data.DataSet SqlExecuteDateSet(string sql, string[] paramters, params object[] values)public System.Data.DataTable SqlExecuteDateTable(string sql, string[] paramters, params object[] values)public int SqlExecuteNonQuery(string sql, string[] paramters, params object[] values)public System.Data.Common.DbDataReader SqlExecuteReader(string sql, string[] paramters, params object[] values)public object SqlExecuteScalar(string sql, string[] paramters, params object[] values)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.