<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 495,comments - 227,trackbacks - 0

    Microsoft Application Blocks for .NET

    Data Access Application Block 概述

    Chris Brooks、Graeme Malcolm、Alex Mackman、Edward Jezierski
    Microsoft Corporation

    2002 年 4 月

    摘要:Data Access Application Block 是一個 .NET 組件,包含優(yōu)化的數(shù)據(jù)訪問代碼,可以幫助用戶調(diào)用存儲過程以及向 SQL Server 數(shù)據(jù)庫發(fā)出 SQL 文本命令。它返回 SqlDataReader、DataSet 和 XmlReader 對象。您可以在自己的 .NET 應(yīng)用程序中將其作為構(gòu)造塊來使用,以減少需要創(chuàng)建、測試和維護的自定義代碼的數(shù)量。您可以下載完整的 C# 和 Visual Basic .NET 源代碼以及綜合文檔。

    簡介

    您是否正在從事 .NET 應(yīng)用程序數(shù)據(jù)訪問代碼的設(shè)計和開發(fā)?您是否覺得自己總是在反復(fù)編寫相同的數(shù)據(jù)訪問代碼?您是否曾經(jīng)將數(shù)據(jù)訪問代碼包裝在 Helper 函數(shù)中,以便能夠在一行中調(diào)用存儲過程?如果是,那么 Microsoft? Data Access Application Block for .NET 正是為您設(shè)計的。

    Data Access Application Block 將訪問 Microsoft SQL Server? 數(shù)據(jù)庫的性能和資源管理方面的最佳經(jīng)驗封裝在一起。您可以很方便地在自己的 .NET 應(yīng)用程序中將其作為構(gòu)造塊使用,從頁減少了需要創(chuàng)建、測試和維護的自定義代碼的數(shù)量。

    尤其是,Data Access Application Block 可以幫助您:

    • 調(diào)用存儲過程或 SQL 文本命令。
    • 指定參數(shù)詳細信息。
    • 返回 SqlDataReader、DataSet 或 XmlReader 對象。

    例如,在引用了 Data Access Application Block 的應(yīng)用程序中,您可以簡單地在一行代碼中調(diào)用存儲過程并生成 DataSet,如下所示:

    [Visual Basic]
    Dim ds As DataSet = SqlHelper.ExecuteDataset( _
          connectionString, _
          CommandType.StoredProcedure, _
          "getProductsByCategory", _
          new SqlParameter("@CategoryID", categoryID))
     
    [C#]
    DataSet ds = SqlHelper.ExecuteDataset( 
          connectionString,
          CommandType.StoredProcedure,
          "getProductsByCategory",
          new SqlParameter("@CategoryID", categoryID)); 
      
      
    注意: Application Block for .NET(用于 .NET 的應(yīng)用程序塊)是基于對成功的 .NET 應(yīng)用程序進行詳細研究而設(shè)計的。它以源代碼的形式提供,您可以原樣使用,也可以針對自己的應(yīng)用程序進行自定義。該應(yīng)用程序塊并不代表未來 Microsoft ADO.NET 程序庫的發(fā)展方向。Microsoft ADO.NET 程序庫是為在各種使用情況下實現(xiàn)對數(shù)據(jù)訪問行為的精確控制而建立的。將來的 ADO.NET 版本可能會使用不同的模型來實現(xiàn)這個方案。

    本概述的其余部分包括以下內(nèi)容:

    Data Access Application Block 包括哪些內(nèi)容?

    下載和安裝 Data Access Application Block

    使用 Data Access Application Block

    內(nèi)部設(shè)計

    常見問題

    反饋和支持

    合作者

    Data Access Application Block 包括哪些內(nèi)容?

    提供了 Data Access Application Block 的源代碼以及快速入門示例應(yīng)用程序,您可以使用這些應(yīng)用程序測試其功能。Data Access Application Block 還包括綜合文檔,可以幫助您使用和了解所提供的代碼。

    Visual Studio .NET 項目

    提供了 Data Access Application Block 的 Microsoft Visual Basic? .NET 和 Microsoft Visual C#? 源代碼,以及每種語言的快速入門示例客戶端應(yīng)用程序,您可以使用這些應(yīng)用程序測試常見的方案。這有助于加深您對 Data Access Application Block 的工作原理的了解。您還可以自定義源代碼以滿足自己的需要。

    您可以編譯 Visual Basic 和 C# Microsoft.ApplicationBlocks.Data 項目,以生成一個名為 Microsoft.ApplicationBlocks.Data.dll 的程序集。該程序集包括一個 SqlHelper 類(其中包含用于執(zhí)行數(shù)據(jù)庫命令的核心功能)和一個 SqlhelperParameterCache 類(提供參數(shù)發(fā)現(xiàn)和緩存功能)。

    文檔

    Data Access Application Block 的文檔主要包括以下內(nèi)容:

    • 使用 Data Access Application Block 開發(fā)應(yīng)用程序。本部分包括快速入門示例,其中包含多種常見的使用情況,可以幫助您快速輕松地掌握 Data Access Application Block(數(shù)據(jù)訪問應(yīng)用程序塊)的使用。
    • Data Access Application Block 的設(shè)計與實現(xiàn)。本部分包括背景設(shè)計原理信息,以便用戶深入了解 Data Access Application Block 的設(shè)計與實現(xiàn)。
    • 部署和運行。本部分包括安裝信息,其中包含部署和更新選項以及與安全性有關(guān)的信息。
    • 參考。本部分包含綜合的 API 參考,其中詳細介紹了構(gòu)成 Data Access Application Block 的類和接口。

    系統(tǒng)要求

    要運行 Data Access Application Block,需要滿足以下要求:

    • Microsoft Windows? 2000、Windows XP Professional
    • .NET Framework SDK(英文)的 RTM 版本
    • Visual Studio? .NET 的 RTM 版本(推薦,但不必需)
    • SQL Server 7.0 或更高版本的數(shù)據(jù)庫服務(wù)器

    下載并安裝 Data Access Application Block

    您可以獲取一個包含已簽名的 Data Access Application Block 程序集和綜合文檔的 Windows 安裝程序文件。

    安裝進程將在您的“程序”菜單中創(chuàng)建一個 Microsoft Application Blocks for .NET(用于 .NET 的 Microsoft 應(yīng)用程序塊)子菜單。該子菜單中有一個 Data Access(數(shù)據(jù)訪問)子菜單,其中包括用于啟動文檔的選項和用于啟動 Data Access Application Block Visual Studio .NET 解決方案的選項。

    請轉(zhuǎn)到 MSDN Downloads(英文)進行下載。

    使用 Data Access Application Block

    本節(jié)討論如何使用 Data Access Application Block 來執(zhí)行數(shù)據(jù)庫命令和管理參數(shù)。圖 1 顯示了 Data Access Application Block 的主要元素。

    圖 1:Data Access Application Block

    SqlHelper 類提供了一組靜態(tài)方法,可以用來向 SQL Server 數(shù)據(jù)庫發(fā)出許多各種不同類型的命令。

    SqlHelperParameterCache 類提供命令參數(shù)緩存功能,可以用來提高性能。該類由許多 Execute 方法(尤其是那些只運行存儲過程的重寫方法)在內(nèi)部使用。數(shù)據(jù)訪問客戶端也可以直接使用它來緩存特定命令的特定參數(shù)集。

    使用 SqlHelper 類執(zhí)行命令

    SqlHelper 類提供了五種 Shared (Visual Basic) 或 static (C#) 方法,它們是:ExecuteNonQueryExecuteDatasetExecuteReaderExecuteScalarExecuteXmlReader。實現(xiàn)的每種方法都提供一組一致的重載。這提供了一種很好的使用 SqlHelper 類來執(zhí)行命令的模式,同時為開發(fā)人員選擇訪問數(shù)據(jù)的方式提供了必要的靈活性。每種方法的重載都支持不同的方法參數(shù),因此開發(fā)人員可以確定傳遞連接、事務(wù)和參數(shù)信息的方式。類中實現(xiàn)的所有方法都支持以下重載:

    [Visual Basic]
    Execute* (ByVal connection As SqlConnection, _
              ByVal commandType As CommandType, _
              ByVal CommandText As String)
    
    Execute* (ByVal connection As SqlConnection, _
              ByVal commandType As CommandType, _
              ByVal commandText As String, _
              ByVal ParamArray commandParameters() As SqlParameter)
    
    Execute* (ByVal connection As SqlConnection, _
              ByVal spName As String, _
              ByVal ParamArray parameterValues() As Object)
    
    Execute* (ByVal transaction As SqlTransaction, _
              ByVal commandType As CommandType, _
              ByVal commandText As String)
    
    Execute* (ByVal transaction As SqlTransaction, _
              ByVal commandType As CommandType, _
              ByVal commandText As String, _
              ByVal ParamArray commandParameters() As SqlParameter)
    
    Execute* (ByVal transaction As SqlTransaction, _
              ByVal spName As String, _
              ByVal ParamArray parameterValues() As Object)
    
    [C#]
    Execute* (SqlConnection connection, CommandType commandType, 
              string commandText)
    
    Execute* (SqlConnection connection, CommandType commandType,
              string commandText, params SqlParameter[] commandParameters)
    
    Execute* (SqlConnection connection, string spName, 
              params object[] parameterValues)
    
    Execute* (SqlConnection connection, 
              CommandType commandType, string commandText)
    
    Execute* (SqlConnection connection,
              CommandType commandType, string commandText, 
              params SqlParameter[] commandParameters)
    
    Execute* (SqlConnection connection,
              string spName, params object[] parameterValues)
    

    除這些重載以外,除 ExecuteXmlReader 之外的其他方法還提供了另一種重載:允許將連接信息作為連接字符串而不是連接對象來傳遞,如下面的方法簽名所示:

    [Visual Basic]
    Execute* (ByVal connectionString As String, _
              ByVal commandType As CommandType, _
              ByVal commandText As String)
    
    Execute* (ByVal connectionString As String, _
              ByVal commandType As CommandType, _
              ByVal commandText As String, _
              ByVal ParamArray commandParameters() As SqlParameter)
    
    Execute* (ByVal connectionString As String, _
              ByVal spName As String, _
              ByVal ParamArray parameterValues() As Object)
    
    [C#]
    Execute* (string connectionString, CommandType commandType, 
              string commandText)
    
    Execute* (string connectionString, CommandType commandType, 
              string commandText, 
              params SqlParameter[] commandParameters)
    
    Execute* (string connectionString, string spName, 
              params object[] parameterValues)
    
    注意: ExecuteXmlReader 不支持連接字符串,因為:與 SqlDataReader 對象不同,XmlReader 對象在 XmlReader 關(guān)閉時沒有提供自動關(guān)閉連接的方法。如果客戶端傳遞了連接字符串,那么當(dāng)客戶端完成對 XmlReader 的操作后,將無法關(guān)閉與 XmlReader 相關(guān)聯(lián)的連接對象。

    通過參考 Data Access Application Block 程序集并導(dǎo)入 Microsoft.ApplicationBlocks.Data 命名空間,您可以輕松編寫使用任何一種 SqlHelper 類方法的代碼,如下面的代碼示例所示:

    [Visual Basic]
    Imports Microsoft.ApplicationBlocks.Data
    
    [C#]
    using Microsoft.ApplicationBlocks.Data;
      

    導(dǎo)入命名空間后,您可以調(diào)用任何 Execute* 方法,如下面的代碼示例所示:

    [Visual Basic]
    Dim ds As DataSet = SqlHelper.ExecuteDataset( _
       "SERVER=(local);DATABASE=Northwind;INTEGRATED SECURITY=True;",
         _
       CommandType.Text, "SELECT * FROM Products")
    
    [C#]
    DataSet ds = SqlHelper.ExecuteDataset( 
       "SERVER=DataServer;DATABASE=Northwind;INTEGRATED
         SECURITY=sspi;", _
       CommandType.Text, "SELECT * FROM Products");
    

    使用 SqlHelperParameterCache 類管理參數(shù)

    SqlHelperParameterCache 類提供了三種可以用來管理參數(shù)的公共共享方法。它們是:

    • CacheParameterSet。用于將 SqlParameters 數(shù)組存儲到緩存中。
    • GetCachedParameterSet。用于檢索緩存的參數(shù)數(shù)組的副本。
    • GetSpParameterSet。一種重載方法,用于檢索指定存儲過程的相應(yīng)參數(shù)(首先查詢一次數(shù)據(jù)庫,然后緩存結(jié)果以便將來查詢)。

    緩存和檢索參數(shù)

    通過使用 CacheParameterSet 方法,可以緩存 SqlParameter 對象數(shù)組。此方法通過將連接字符串和命令文本連接起來創(chuàng)建一個鍵,然后將參數(shù)數(shù)組存儲在 Hashtable 中。

    要從緩存中檢索參數(shù),請使用 GetCachedParameterSet 方法。此方法將返回一個 SqlParameter 對象數(shù)組,這些對象已使用緩存(與傳遞給該方法的連接字符串和命令文本相對應(yīng))中的參數(shù)的名稱、值、方向和數(shù)據(jù)類型等進行了初始化。

    注意: 用作參數(shù)集的鍵的連接字符串通過簡單的字符串比較進行匹配。用于從 GetCachedParameterSet 中檢索參數(shù)的連接字符串必須與用來通過 CacheParameterSet 來存儲這些參數(shù)的連接字符串完全相同。語法不同的連接字符串即使語義相同,也不會被認為是匹配的。

    以下代碼顯示了如何使用 SqlHelperParameterCache 類來緩存和檢索 Transact-SQL 語句的參數(shù)。

    [Visual Basic]
    ' 初始化連接字符串和命令文本
    ' 它們將構(gòu)成用來存儲和檢索參數(shù)的鍵
    Const CONN_STRING As String = _
      "SERVER=(local); DATABASE=Northwind; INTEGRATED SECURITY=True;"
    Dim sql As String = _
           "SELECT ProductName FROM Products " + _
           "WHERE Category=@Cat AND SupplierID = @Sup"
    
    ' 緩存參數(shù)
    Dim paramsToStore(1) As SqlParameter
    paramsToStore(0) = New SqlParameter("@Cat", SqlDbType.Int)
    paramsToStore(1) = New SqlParameter("@Sup", SqlDbType.Int)
    SqlHelperParameterCache.CacheParameterSet(CONN_STRING, _
                                              sql, _
                                              paramsToStore)
    
    ' 從緩存中檢索參數(shù)
    Dim storedParams(1) As SqlParameter
    storedParams = SqlHelperParameterCache.GetCachedParameterSet( _
                                                     CONN_STRING, sql)
    storedParams(0).Value = 2
    storedParams(1).Value = 3
    
    ' 在命令中使用參數(shù)
    Dim ds As DataSet
    ds = SqlHelper.ExecuteDataset(CONN_STRING, _
                                  CommandType.Text, _
                                  sql, storedParams)
    
    [C#]
    // 初始化連接字符串和命令文本
    // 它們將構(gòu)成用來存儲和檢索參數(shù)的鍵
    const string CONN_STRING =
      "SERVER=(local); DATABASE=Northwind; INTEGRATED SECURITY=True;";
    string spName = "SELECT ProductName FROM Products " + 
                    "WHERE Category=@Cat AND SupplierID = @Sup";
    
    // 緩存參數(shù)
    SqlParameter[] paramsToStore = new SqlParameter[2];
    paramsToStore[0] = New SqlParameter("@Cat", SqlDbType.Int);
    paramsToStore[1] = New SqlParameter("@Sup", SqlDbType.Int);
    SqlHelperParameterCache.CacheParameterSet(CONN_STRING, 
                                              sql, 
                                              paramsToStore);
    
    // 從緩存中檢索參數(shù)
    SqlParameter storedParams = new SqlParameter[2];
    storedParams = SqlHelperParameterCache.GetCachedParameterSet(
                                                  CONN_STRING, sql);
    storedParams(0).Value = 2;
    storedParams(1).Value = 3;
    
    // 在命令中使用參數(shù)
    DataSet ds;
    ds = SqlHelper.ExecuteDataset(CONN_STRING, 
                                  CommandType.StoredProcedure,
                                  sql, storedParams);
    

    檢索存儲過程參數(shù)

    SqlHelperParameterCache 還提供了針對特定存儲過程檢索參數(shù)數(shù)組的方法。一種名為 GetSpParameterSet 的重載方法提供了此功能,它包含兩種實現(xiàn)。該方法嘗試從緩存中檢索特定存儲過程的參數(shù)。如果這些參數(shù)尚未被緩存,則使用 .NET 的 SqlCommandBuilder 類從內(nèi)部檢索,并將它們添加到緩存中,以便用于后續(xù)的檢索請求。然后,為每個參數(shù)指定相應(yīng)的參數(shù)設(shè)置,最后將這些參數(shù)以數(shù)組形式返回給客戶端。以下代碼顯示了如何檢索 Northwind 數(shù)據(jù)庫中 SalesByCategory 存儲過程的參數(shù)。

    [Visual Basic]
    ' 初始化連接字符串和命令文本
    ' 它們將構(gòu)成用來存儲和檢索參數(shù)的鍵
    Const CONN_STRING As String = _
      "SERVER=(local); DATABASE=Northwind; INTEGRATED SECURITY=True;"
    Dim spName As String = "SalesByCategory"
    
    ' 檢索參數(shù)
    Dim storedParams(1) As SqlParameter
    storedParams = SqlHelperParameterCache.GetSpParameterSet( _
                                              CONN_STRING, spName)
    storedParams(0).Value = "Beverages"
    storedParams(1).Value = "1997"
    
    ' 在命令中使用參數(shù)
    Dim ds As DataSet
    ds = SqlHelper.ExecuteDataset(CONN_STRING, _
                                  CommandType.StoredProcedure, _
                                  spName, storedParams)
    
    [C#]
    // 初始化連接字符串和命令文本
    // 它們將構(gòu)成用來存儲和檢索參數(shù)的鍵
    const string CONN_STRING = 
      "SERVER=(local); DATABASE=Northwind; INTEGRATED SECURITY=True;";
    string spName = "SalesByCategory";
    
    // 檢索參數(shù)
    SqlParameter storedParams = new SqlParameter[2];
    storedParams = SqlHelperParameterCache.GetSpParameterSet(
                                              CONN_STRING, spName);
    storedParams[0].Value = "Beverages";
    storedParams[1].Value = "1997";
    
    // 在命令中使用參數(shù)
    DataSet ds;
    ds = SqlHelper.ExecuteDataset(CONN_STRING, 
                                  CommandType.StoredProcedure,
                                  spName, storedParams);
    

    內(nèi)部設(shè)計

    Data Access Application Block 包含了完整的源代碼和有關(guān)其設(shè)計的綜合指南。本節(jié)介紹有關(guān)主要實現(xiàn)的詳細信息。

    SqlHelper 類實現(xiàn)詳細信息

    SqlHelper 類用于通過一組靜態(tài)方法來封裝數(shù)據(jù)訪問功能。該類不能被繼承或?qū)嵗虼藢⑵渎暶鳛榘瑢S脴?gòu)造函數(shù)的不可繼承類。

    SqlHelper 類中實現(xiàn)的每種方法都提供了一組一致的重載。這提供了一種很好的使用 SqlHelper 類來執(zhí)行命令的模式,同時為開發(fā)人員選擇訪問數(shù)據(jù)的方式提供了必要的靈活性。每種方法的重載都支持不同的方法參數(shù),因此開發(fā)人員可以確定傳遞連接、事務(wù)和參數(shù)信息的方式。在 SqlHelper 類中實現(xiàn)的方法包括:

    • ExecuteNonQuery。此方法用于執(zhí)行不返回任何行或值的命令。這些命令通常用于執(zhí)行數(shù)據(jù)庫更新,但也可用于返回存儲過程的輸出參數(shù)。
    • ExecuteReader。此方法用于返回 SqlDataReader 對象,該對象包含由某一命令返回的結(jié)果集。
    • ExecuteDataset。此方法返回 DataSet 對象,該對象包含由某一命令返回的結(jié)果集。
    • ExecuteScalar。此方法返回一個值。該值始終是該命令返回的第一行的第一列。
    • ExecuteXmlReader。此方法返回 FOR XML 查詢的 XML 片段。

    除了這些公共方法外,SqlHelper 類還包含一些專用函數(shù),用于管理參數(shù)和準備要執(zhí)行的命令。不管客戶端調(diào)用什么樣的方法實現(xiàn),所有命令都通過 SqlCommand 對象來執(zhí)行。在 SqlCommand 對象能夠被執(zhí)行之前,所有參數(shù)都必須添加到 Parameters 集合中,并且必須正確設(shè)置 ConnectionCommandTypeCommandTextTransaction 屬性。SqlHelper 類中的專用函數(shù)主要用于提供一種一致的方式,以便向 SQL Server 數(shù)據(jù)庫發(fā)出命令,而不考慮客戶端應(yīng)用程序調(diào)用的重載方法實現(xiàn)。SqlHelper 類中的專用實用程序函數(shù)包括:

    • AttachParameters:該函數(shù)用于將所有必要的 SqlParameter 對象連接到正在運行的 SqlCommand。
    • AssignParameterValues:該函數(shù)用于為 SqlParameter 對象賦值。
    • PrepareCommand:該函數(shù)用于對命令的屬性(如連接、事務(wù)環(huán)境等)進行初始化。
    • ExecuteReader:此專用 ExecuteReader 實現(xiàn)用于通過適當(dāng)?shù)?CommandBehavior 打開 SqlDataReader 對象,以便最有效地管理與閱讀器關(guān)聯(lián)的連接的有效期。

    SqlHelperParameterCache 類實現(xiàn)詳細信息

    參數(shù)數(shù)組緩存在專用 Hashtable 中。從緩存中檢索的參數(shù)進行內(nèi)部復(fù)制,這樣客戶端應(yīng)用程序能夠更改參數(shù)值以及進行其他操作,而不會影響緩存的參數(shù)數(shù)組。專用共享函數(shù) CloneParameters 可以實現(xiàn)此目的。

    常見問題

    此版本包含哪些新增功能?

    與 Data Access Application Block Beta 2.0 版本相比,該 RTM 版本包含以下新增功能和變化:

    • SqlHelper 類方法的事務(wù)型重載不再需要 SqlConnection 參數(shù)。在此版本中,連接信息從 SqlTransaction 對象中派生,因此不必在方法簽名中包含 SqlConnection 對象參數(shù)。
    • 現(xiàn)在,GetSpParameterSet 方法使用 ADO.NET CommandBuilder 類的 DeriveParameters 方法來確定存儲過程所需要的參數(shù)。這比 Beta 2.0 版本中直接通過查詢數(shù)據(jù)庫來檢索信息的效率更高。

    可以使用 XCOPY 部署方法來部署 Data Access Application Block 程序集嗎?

    可以。Microsoft.ApplicationBlocks.Data.dll 程序集在編譯后可以使用 XCOPY 進行部署。

    什么時候應(yīng)該使用 ExecuteDataset 方法,什么時候應(yīng)該使用 ExecuteReader 方法?

    這個問題實際上是什么時候應(yīng)該返回 DataSet 對象中的多個數(shù)據(jù)行,什么時候應(yīng)該使用 DataReader。答案取決于您的應(yīng)用程序的特定需要,以及您在靈活性和原始性能之間的取舍。DataSet 為您提供數(shù)據(jù)的靈活的且斷開連接的關(guān)系視圖,而 DataReader 為您提供性能卓越的、只讀的、僅向前光標。有關(guān) DataSet 和 DataReader 的全面比較,請參閱 Data Access Architecture Guide(英文)。

    如何使用 ExecuteDataset 返回包含多個表的數(shù)據(jù)集?

    通過創(chuàng)建一個可以返回多個行集的存儲過程(通過執(zhí)行多個 SELECT 語句或者對其他存儲過程進行嵌套調(diào)用),并使用 ExecuteDataset 方法執(zhí)行該過程,您可以檢索包含多個表的數(shù)據(jù)集。

    例如,假設(shè)您的數(shù)據(jù)庫包含以下存儲過程。

    CREATE PROCEDURE GetCategories
    AS
    SELECT * FROM Categories
    GO
    CREATE PROCEDURE GetProducts
    AS
    SELECT * FROM Products
      

    您可以創(chuàng)建一個主存儲過程來對這些過程進行嵌套調(diào)用,如下面的代碼示例所示。

    CREATE PROCEDURE GetCategoriesAndProducts
    AS
    BEGIN
      EXEC GetCategories
      EXEC GetProducts
    END
      

    使用 ExecuteDataset 方法執(zhí)行此主存儲過程將返回一個 DateSet,其中包含兩個表:一個表包含分類數(shù)據(jù),另一個表包含產(chǎn)品數(shù)據(jù)。

    注意: ExecuteDataset 方法不提供為返回的表指定自定義名稱的方法。第一個表的編號始終為 0,名稱為 Table,第二個表的編號為 1,名稱為 Table1,依此類推。

    還有其他的應(yīng)用程序塊嗎?

    Data Access Application Block 是即將發(fā)布的幾個應(yīng)用程序塊之一。這些應(yīng)用程序塊可以解決開發(fā)人員在不同項目中遇到的共同問題。它們可以快速方便地插入到 .NET 應(yīng)用程序中。

    反饋和支持

    如果您對 Data Access Application Block 有任何問題、意見和建議,請向 devfdbck@microsoft.com 發(fā)送電子郵件,我們將及時提供反饋。

    Application Blocks for .NET 旨在協(xié)助開發(fā) .NET 分布式應(yīng)用程序。示例代碼和文檔都按原樣提供。盡管已經(jīng)過測試并被認為是穩(wěn)定的代碼集,但我們并不象傳統(tǒng)的 Microsoft 產(chǎn)品那樣對其提供支持。

    我們還創(chuàng)建了一個新聞組,可以幫助您使用 Application Blocks for .NET(.NET 應(yīng)用程序塊)。您可以通過新聞組在聯(lián)機的開放論壇中向同行、同事和 Microsoft 支持專家咨詢。

    其他人也可以從您的問題和評論中獲益,我們的開發(fā)小組將每天查看新聞組:
    新聞組:基于 Web 的讀者
    http://msdn.microsoft.com/newsgroups/loadframes.asp?icp=msdn&slcid=us&newsgroup=microsoft.public.dotnet.distributed_apps(英文)

    新聞組:NNTP 讀者
    news://msnews.microsoft.com/microsoft.public.dotnet.distributed_apps(英文)

    您想學(xué)習(xí)和利用 .NET 的功能嗎?歡迎您與 Microsoft Technology Centers 的技術(shù)專家并肩工作,您將學(xué)到最好的開發(fā)經(jīng)驗。有關(guān)詳細信息,請訪問 http://www.microsoft.com/business/services/mtc.asp(英文)。

    您需要更多的幫助嗎?請訪問新增的客戶支持服務(wù) Advisory Services,該解決方案可以滿足您小規(guī)模的咨詢需要。有關(guān) Advisory Services 的詳細信息,請訪問 http://support.microsoft.com/default.aspx?id=fh;EN-US;advisoryservice(英文)。

    更多信息

    Data Access Application Block 的設(shè)計和開發(fā)是建立在 Data Access in .NET Architecture Guide(英文)中討論的最佳開發(fā)經(jīng)驗和通用設(shè)計原則基礎(chǔ)之上的。請閱讀該指南,以了解有關(guān)數(shù)據(jù)訪問的詳細信息。

    posted on 2007-01-22 11:06 SIMONE 閱讀(761) 評論(0)  編輯  收藏 所屬分類: .NET
    主站蜘蛛池模板: 亚洲男女内射在线播放| 免费无码又爽又刺激网站直播| 日韩一级视频免费观看| 亚洲一区二区无码偷拍| 国产精品成人免费一区二区| 色婷五月综激情亚洲综合| 国产卡一卡二卡三免费入口| 亚洲人成免费电影| 一二三四免费观看在线视频中文版| 亚洲冬月枫中文字幕在线看| 99视频全部免费精品全部四虎| 亚洲人成激情在线播放| 免费人成网站在线观看10分钟| 亚洲妇女熟BBW| 成人免费a级毛片| 久久亚洲中文无码咪咪爱| 国产免费av一区二区三区| 黄色a三级三级三级免费看| 亚洲欧洲日产国码一级毛片| 国产精品永久免费| 亚洲国产精品无码专区影院 | 亚洲国产成人精品无码区在线秒播| 免费A级毛片无码A∨中文字幕下载| 亚洲午夜久久久精品影院| 99re免费99re在线视频手机版| 亚洲国产视频网站| 成人毛片免费在线观看| 亚洲乱码日产精品一二三| 国产免费人成视频在线观看| 一级毛片视频免费| 亚洲成A人片在线观看WWW| 永久免费在线观看视频| 中文字幕无码精品亚洲资源网久久| 国产精品99久久免费| 乱淫片免费影院观看| 亚洲人成人网站色www| 99久久综合精品免费| 国产午夜亚洲精品| 免费大片黄手机在线观看| 中文字幕高清免费不卡视频| 99久久亚洲精品无码毛片|