2006年1月版比起前版 Data Access Application Block 的变化
2006年2月9日 18:11
2006年1月版比起前版 Data Access Application Block 的变化
整理翻译自企业库的文档
一、以前的 DBCommandWrapper 类被去掉了,因为在 .net 2.0 中 System.Data.Common.DbCommand 提供了类似的功能。
以前Database 实例类创建和返回一个 DBCommandWrapper 对象,在2006年1月版 中变成了创建和返回一个DbCommand 对象。
以前Database 实例类的执行,接受一个 DBCommandWrapper 对象,现在是 DbCommand 对象
SetParameterValue, GetParameterValue, AddParameter, AddInParameter, AddOutParameter. 这些原来在 DBCommandWrapper 中的方法,现在移到了 Database 类了,原因当然很简单,System.Data.Common.DbCommand 类 毕竟不是自己可以控制的呀。
以前我们这么写:
Database db = DatabaseFactory.CreateDatabase();
DBCommandWrapper dbCommand = db.GetStoredProcCommandWrapper("GetProductsByCategory");
dbCommand.AddInParameter("@CategoryID", DbType.Int32, Category);
DataSet productDataSet = db.ExecuteDataSet(dbCommand);
现在我们这么写
Database db = DatabaseFactory.CreateDatabase();
DbCommand dbCommand = db.GetStoredProcCommand("GetProductsByCategory");
db.AddInParameter(dbCommand, "CategoryID", DbType.Int32, Category);
DataSet productDataSet = db.ExecuteDataSet(dbCommand);
二、为了避免存储过程参数名字在不同数据库中有不同的书写方式,你在输入存储过程参数名的时候,不再需要这些跟数据库紧密挂钩的字符。
比如,如果你使用的是SQL Server 数据库,以前你可以这么写
dbCommand.AddInParameter("@CategoryID", DbType.Int32, Category);
现在,则变成了
db.AddInParameter(dbCommand, "CategoryID", DbType.Int32, Category);
你不再额外需要输入 @ 字符,系统会自动根据你的数据库类型,在实际调用时候,自动加上这个字符。
三、Database 类的 GetConnection 方法变成了 CreateConnection 方法,这个方法返回一个 System.Data.Common.DbConnection 类,这个类是 .net 2.0 新增的类。
四、不再维护连接字符串,而使用 2.0 中, config文件中新增的配置节 connectionStrings 配置节。
后面详述。
五、通用数据库访问类和其他数据库访问类的变化。即:GenericDatabase 类。
后面详述。
六、ADO.NET 2.0 中 Oracle 数据类型,DbType.Guid 和 DbType.Boolean 发生了变化。
由于我对 Oracle 不熟悉,这里就不翻译了,自己去看原文吧。
参考资料: