Enterprise Library 4.0 – May 2008是Microsoft patterns & practices Enterprise Library的新的版本,Enterprise Library有一系列的應用程序塊及一個(gè)核心的特性(諸如對象創(chuàng )建、配置文件機制)組成,所有的這些都是可重用的組件,他們被設計來(lái)幫助開(kāi)發(fā)人員應對常見(jiàn)的企業(yè)開(kāi)發(fā)所面臨的挑戰,4.0這個(gè)版本還添加了一個(gè)新的應用程序塊- Unity Application Block,這個(gè)新的應用程序塊為對象產(chǎn)生和依賴(lài)注入提供了容器,除此以外4.0還添加了一些其他的新特性.
下面我們就用實(shí)例的方式來(lái)運用Data Access Application Block:
首先我們需要在項目中引用兩個(gè)dll:
Microsoft.Practices.EnterpriseLibrary.Common.dll;
Microsoft.Practices.EnterpriseLibrary.Data.dll;
在項目中添加配置文件app.config或者web.config
然后右鍵config文件選擇Edit Enterprise Library Configuration打開(kāi)界面化的配置文件編輯工具:

打開(kāi)編輯工具后

設置LocalSqlServer的相關(guān)參數,例如:

參數說(shuō)明:
1.ConnectionString:連接字符串。
2.ProviderName:數據庫適配器類(lèi)型。
3.Name:Connection String的名字。
將Data Access Application Block的DefaultDatabase屬性值設置為剛才你設置的LocalSqlServer的名稱(chēng),如下圖:

至此,我們的Data最簡(jiǎn)潔的配置就完成了,下面我們開(kāi)始完成我們代碼的編寫(xiě)
<!--[if !supportLists]-->1. <!--[endif]-->首先我們創(chuàng )建DataBase的實(shí)例:
//實(shí)例化Database
Database db = DatabaseFactory.CreateDatabase("NorthWindDB");
<!--[if !supportLists]-->2. <!--[endif]-->創(chuàng )建DbCommand對象(1.普通sql語(yǔ)句執行的cmd; 2.存儲過(guò)程執行的cmd):
//創(chuàng )建普通sql語(yǔ)句執行的DbCommand對象
DbCommand dbCmd = db.GetSqlStringCommand("sql語(yǔ)句");
//創(chuàng )建存儲過(guò)程執行的DbCommand對象 方法一
DbCommand dbCmd = db.GetSqlStringCommand("存儲過(guò)程的名稱(chēng)");
dbCmd.CommandType = CommandType.StoredProcedure;
//創(chuàng )建存儲過(guò)程執行的DbCommand對象 方法二
DbCommand dbCmd = db.GetStoredProcCommand("存儲過(guò)程的名稱(chēng)");
如果需要為存儲過(guò)程傳遞參數則添加下面代碼
db.AddInParameter(dbCmd, "OrderID", DbType.Int32, "參數的值");//"OrderID"為存儲過(guò)程對應的參數名,第三個(gè)參數為參數類(lèi)型
<!--[if !supportLists]-->3. <!--[endif]-->執行sql語(yǔ)句或者存儲過(guò)程
通常情況下,我們需要返回DataSet、DataReader和單值,要得到這三種返回我們可以分別加上下面的代碼:
DataSet ds = db.ExecuteDataSet(dbCmd); //獲取DataSet
IDataReader dr = db.ExecuteReader(dbCmd); //獲取DataReader
string singleValue = db.ExecuteScalar(dbCmd).ToString();//獲取單值,類(lèi)型你可以根據你的需要去設置
好了,這樣以后我們就可以使用我們獲取到的DataSet、DataReader和單值進(jìn)行我們自己其他的一下操作了(顯示、打印等)。
除了上面我們列舉的一些常見(jiàn)的使用以外,我們在實(shí)際的開(kāi)發(fā)當中還可能經(jīng)常性的使用事務(wù),下面我列出了事務(wù)的使用方式:
DbCommand procCmd1 = null;
DbCommand procCmd2 = null;
using (IDbConnection con = db.CreateConnection())
{
con.Open();
IDbTransaction tran = con.BeginTransaction();
try
{
//執行兩個(gè)存儲過(guò)程
procCmd1 = db.GetStoredProcCommand("存儲過(guò)程1");
procCmd2 = db.GetStoredProcCommand("存儲過(guò)程2");
db.AddInParameter(procCmd2, "OrderID", DbType.Int32, 10248); //第四個(gè)參數是存儲過(guò)程參數的值,第二個(gè)參數是存儲過(guò)程的參數的名稱(chēng)
tran.Commit();
}
catch (Exception ee)
{
tran.Rollback();
}
finally
{
con.Close();
}
}
好了,到這里實(shí)例就寫(xiě)完了。^^ Brave chen
聯(lián)系客服