2009-12-18 57 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中的解決方案並指出錯誤。它會花費您的時間。