我刚下载的Data Access Application Block 2.0,装完后为啥跟讲座中的有点不一样?例如:
人家的:DBCommandWrapper myCommandWrapper = dbSQL.GetStoredProcCommandWrapper
我却只有这个替代:System.Data.Common.DbCommand dbc = DB.GetStoredProcCommandconfig配置也跟讲座有点不一样,讲座上的建立Data Access Application Block 的时候有附带其它的项目,我的就没有
最重要的一个问题,请问Database DB = DatabaseFactory.CreateDatabase("");如何使用,我建立了一个config,调用之后,结果引发了如下错误:
InnerException: {"未能加载文件或程序集“Microsoft.Practices.ObjectBuilder, Version=1.0.51205.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。":"Microsoft.Practices.ObjectBuilder, Version=1.0.51205.0, Culture=neutral, PublicKeyToken=null"}我的config文件内容<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
  </configSections>
  <dataConfiguration defaultDatabase="Connection String" />
  <connectionStrings>
    <add name="Connection String" connectionString="Database=Prover;Server=cnwolf;Integrated Security=SSPI;"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>这是通过EntLibConfig.exe创建的?这个文件是不是传说中的config的控制台?我的Application Block 中只有这个比较象传说中的config的控制台

解决方案 »

  1.   

    在 Data Access Application Block 里,数据库配置信息一般写在DataConfiguration.config里,
    而且安装后,有附带很多sample,可以参考呀
      

  2.   

    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 不熟悉,这里就不翻译了,自己去看原文吧。参考资料:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/entlibjan2006_dataaccessappblock.asp
      

  3.   

    http://blog.joycode.com/ghj/category/1151.aspx
    讲得不错!