2009-12-18 54 views
0

这当前项目,我被分配使用的3.1版水平MS企业库的最新版本不兼容:与旧版本像3.1

Microsoft.Practices.EnterpriseLibrary.Common; 
Microsoft.Practices.EnterpriseLibrary.Data; 

当我尝试去了解更多的功能Ent Lib,我遇到了很多关于各种版本的文章和文档(我认为是3.1,4.0和5.0)。

一般来说,新版本可以使用为早期版本的Ent Lib编写的应用程序代码吗?我还没有调查过我继承的这个应用程序中的所有源代码,但我认为只使用了数据访问应用程序块的“基础”。下面是一段典型的代码块:

 public override List<Erx.Action> GetAll(bool bIsActive) 
    { 
     Database db = null; 
     DbCommand cmd = null; 
     List<Erx.Action> lst = null; 
     IDataReader iRdr = null; 
     try 
     { 
      db = DatabaseFactory.CreateDatabase(); 
      cmd = db.GetStoredProcCommand("Mst_GetAllCorrectiveAction"); 
      db.AddInParameter(cmd, "@CorrectiveActionID", DbType.Int32, -1); 
      db.AddInParameter(cmd, "@IsActive", DbType.Boolean, bIsActive); 
      iRdr = db.ExecuteReader(cmd); 

      lst = new List<Erx.Action>(); 

      while (iRdr.Read()) 
      { 
       Action objAction = new Action(); 
       objAction.CorrectiveAction = iRdr["CorrectiveAction"].ToString(); 
       objAction.CorrectiveActionID = int.Parse(iRdr["CorrectiveActionID"].ToString()); 
       objAction.IsActive = (bool)iRdr["IsActive"]; 
       lst.Add(objAction); 
      } 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
     finally 
     { 
      db = null; 
      iRdr.Close(); 
      if (cmd != null) 
      { 
       cmd.Dispose(); cmd = null; 
      } 
     } 
     return lst; 
    } 

坦率地说,这似乎并没有提供远远超出普通ADO.Net但也许新版本让事情变得更简单(我听说过团结一些很好的东西)。

回答

1

我刚安装耳鼻喉科库4.1和挖密切进文档,发现这个在“简介数据访问应用程序块”:

更改的功能,3.1及更高版本

在一般情况下,使用早期版本的数据访问应用程序块构建的应用程序将在此版本中运行,而无需任何代码更改。可能需要更新引用以引用新程序集并更新配置文件以引用程序集的正确版本。但是,对版本3.1(2007年5月)中的数据访问应用程序块进行了一些更改,如果升级到当前版本的企业库,可能会影响为较早版本编写的应用程序。以下各节将介绍这些更改。

.NET框架2.0 TransactionScope类 要充分利用.NET Framework 2.0的TransactionScope类的,也出现了变化,以一些在企业图书馆的数据库版本类中的方法从3.1版本起。这些方法(如ExecuteNonQuery)已被修改,以通过用GetOpenConnection方法替换GetConnection方法来识别TransactionScope实例何时处于活动状态。如果您编写了一个继承自Database类的类,则需要重写代码以考虑这些更改。如果您继续使用GetConnection方法,您将收到编译器警告。另外,如果您的应用程序使用ExecuteXmlReader方法,则可能需要重写代码以在关闭连接之前测试TransactionScope实例是否处于活动状态。 有关更多信息,请参阅使用TransactionScope类。有关如何使用ExecuteXMLReader方法的示例,请参阅将多行读取为XML。 强大的文本 SQL Server精简版 企业库3.1 - 2007年5月及更高版本支持SQL Server精简版(CE)。 SQL Server CE提供关系数据库的基本功能,适用于需要本地数据存储但不需要SQL Server全部功能的桌面和移动应用程序。有关更多信息,请参阅创建数据库对象中的“使用SQL Server CE”一节。

我还在试图理解这个DAAB的真正用处。似乎需要大量的doc阅读才能最终编写比DAAB不辅助ADO.NET所需的代码少一点的代码。我想如果想提供一个更简单的转换说,Oracle [来自MS SQL Server],这是一种配置事物的有用方法。

0

如果您有单元测试,将端口设置为新的并运行并查看,如果您有Resharper,它可以分析您在VStudio中的解决方案并指出错误。它会花费您的时间。