Enterprise Library 4.0 – May 2008是Microsoft patterns & practices Enterprise Library的新的版本,Enterprise Library有一系列的应用程序块及一个核心的特性(诸如对象创建、配置文件机制)组成,所有的这些都是可重用的组件,他们被设计来帮助开发人员应对常见的企业开发所面临的挑战,4.0这个版本还添加了一个新的应用程序块- Unity Application Block,这个新的应用程序块为对象产生和依赖注入提供了容器,除此以外4.0还添加了一些其他的新特性.
下面我们就用实例的方式来运用Data Access Application Block:
首先我们需要在项目中引用两个dll:
Microsoft.Practices.EnterpriseLibrary.Common.dll;
Microsoft.Practices.EnterpriseLibrary.Data.dll;
在项目中添加配置文件app.config或者web.config
然后右键config文件选择Edit Enterprise Library Configuration打开界面化的配置文件编辑工具:
打开编辑工具后
设置LocalSqlServer的相关参数,例如:
参数说明:
1.ConnectionString:连接字符串。
2.ProviderName:数据库适配器类型。
3.Name:Connection String的名字。
将Data Access Application Block的DefaultDatabase属性值设置为刚才你设置的LocalSqlServer的名称,如下图:
至此,我们的Data最简洁的配置就完成了,下面我们开始完成我们代码的编写
1. 首先我们创建DataBase的实例:
//实例化Database
Database db = DatabaseFactory.CreateDatabase("NorthWindDB");
2. 创建DbCommand对象(1.普通sql语句执行的cmd; 2.存储过程执行的cmd):
//创建普通sql语句执行的DbCommand对象
DbCommand dbCmd = db.GetSqlStringCommand("sql语句");
//创建存储过程执行的DbCommand对象 方法一
DbCommand dbCmd = db.GetSqlStringCommand("存储过程的名称");
dbCmd.CommandType = CommandType.StoredProcedure;
//创建存储过程执行的DbCommand对象 方法二
DbCommand dbCmd = db.GetStoredProcCommand("存储过程的名称");
如果需要为存储过程传递参数则添加下面代码
db.AddInParameter(dbCmd, "OrderID", DbType.Int32, "参数的值");//"OrderID"为存储过程对应的参数名,第三个参数为参数类型
3. 执行sql语句或者存储过程
通常情况下,我们需要返回DataSet、DataReader和单值,要得到这三种返回我们可以分别加上下面的代码:
DataSet ds = db.ExecuteDataSet(dbCmd); //获取DataSet
IDataReader dr = db.ExecuteReader(dbCmd); //获取DataReader
string singleValue = db.ExecuteScalar(dbCmd).ToString();//获取单值,类型你可以根据你的需要去设置
好了,这样以后我们就可以使用我们获取到的DataSet、DataReader和单值进行我们自己其他的一下操作了(显示、打印等)。
除了上面我们列举的一些常见的使用以外,我们在实际的开发当中还可能经常性的使用事务,下面我列出了事务的使用方式:
DbCommand procCmd1 = null;
DbCommand procCmd2 = null;
using (IDbConnection con = db.CreateConnection())
{
con.Open();
IDbTransaction tran = con.BeginTransaction();
try
{
//执行两个存储过程
procCmd1 = db.GetStoredProcCommand("存储过程1");
procCmd2 = db.GetStoredProcCommand("存储过程2");
db.AddInParameter(procCmd2, "OrderID", DbType.Int32, 10248); //第四个参数是存储过程参数的值,第二个参数是存储过程的参数的名称
tran.Commit();
}
catch (Exception ee)
{
tran.Rollback();
}
finally
{
con.Close();
}
}
好了,到这里实例就写完了。^^ Brave chen