WisDom.Net ---持久層
1.什麼是持久層
持久層負責最基礎的功能支撐,為專案提供一個高層,統一,和併發的資料持久機制,提供了比如建立資料庫連線,關閉資料庫連線,執行sql語句,事物管理等基礎功能,為上層的資料處理層執行相關的支援,大大的簡化了資料,增刪改查等功能的相關的功能的開發過程,同時也保持了多層結構的優勢,在WisDom.Net 中考慮支援的資料庫有mysql ,sqlsever ,orcale 等不同的資料庫,在這裡我們使用.NET 4.0 中逆變與協邊來來實現,相關的功能、
2.什麼是協變,協邊
協變逆變正是利用繼承關係 對不同引數型別或返回值型別 的委託或者泛型介面之間做轉變。我承認這句話很繞,如果你也覺得繞不妨往下看看。如果一個方法要接受Dog引數,那麼另一個接受Animal引數的方法肯定也可以接受這個方法的引數,這是Animal向Dog方向的轉變是逆變。如果一個方法要求的返回值是Animal,那麼返回Dog的方法肯定是可以滿足其返回值要求的,這是Dog向Animal方向的轉變是協變。由子類向父類方向轉變是協變 協變用於返回值型別用out關鍵字 由父類向子類方向轉變是逆變 逆變用於方法的引數型別用in關鍵字
3.WisDom.Net 中的實現
給出一點點參考程式碼,
namespace WisDom.Net.PublicUnit
{
public class BaseDb<DbConn, DbCmd, DbParam, DbReader, DbAdapter, DbTrans>
where DbConn : DbConnection, new()
where DbCmd : DbCommand, new()
where DbParam : DbParameter, new()
where DbReader : DbDataReader
where DbAdapter : DbDataAdapter, new()
where DbTrans : DbTransaction
{
// code
} public class SqlSever:BaseDb<SqlConnection,SqlCommand,SqlParameter,SqlDataReader,SqlDataAdapter,SqlTransaction>
{ } public class ole:BaseDb<OleDbConnection, OleDbCommand, OleDbParameter, OleDbDataReader, OleDbDataAdapter, OleDbTransaction>
{ } public class Mysql : BaseDb<MySqlConnection, MySqlCommand, MySqlParameter, MySqlDataReader, MySqlDataAdapter, MySqlTransaction>
{ } }