逐步解說:將本機資料庫快取加入至 N-Tier 應用程式
A 本機資料庫快取,層級Visual Studio,SQL Server 壓縮的資料庫已設定為使用別人建立的遠端資料庫同步處理資料Microsoft Synchronization Services for ADO.NET。 本逐步解說提供逐步指示,將 SQL Server 壓縮的資料庫中建立的應用程式加入逐步解說:建立 N-Tier 資料應用程式主題。
在此逐步解說中,您將學習如何執行下列工作:
將本機資料庫快取項目加入至專案。
設定資料同步處理。
將同步處理作業納入現有的資料服務。
修改會載入資料的程式碼,讓該程式碼可從本機資料庫快取擷取 Customers 資料表。
加入程式碼以啟始同步處理。
必要條件
若要完成這個逐步解說,您需要下列項目:
在逐步解說:建立 N-Tier 資料應用程式中建立的方案和相關專案。
Northwind 範例資料庫的存取權。 如需詳細資訊,請參閱 HOW TO:安裝範例資料庫。
注意事項 |
---|
在下列指示的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置:您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。如需詳細資訊,請參閱 Visual Studio 設定。 |
開啟 NTierWalkthrough 方案
若要開啟 NTierWalkthrough 方案
指向 [檔案] 功能表上的 [開啟],然後按一下 [專案/方案],再巡覽至 NTierWalkthrough.sln 檔案的位置。
注意事項 NTierWalkthrough.sln 檔案是在逐步解說:建立 N-Tier 資料應用程式主題中建立,它是完成這個逐步解說的必要條件。如果您還沒完成逐步解說:建立 N-Tier 資料應用程式主題,請先完成該主題,並在完成時儲存所有專案。
將本機資料庫快取加入至 NTierWalkthrough
因為本機資料庫快取是 SQL Server 壓縮的資料庫位於用戶端上,將本機資料庫快取加入 PresentationTier 專案。 由於本逐步解說會說明如何快取 Customers 資料表,因此您必須將本機資料庫快取命名為 CustomersCache。
注意事項 |
---|
在本逐步解說中,本機資料庫快取的名稱為 CustomersCache,這是因為它只使用 Customers 資料表,但本機資料庫快取可以包含多個資料表。 |
若要將本機資料快取加入至展示層
以滑鼠右鍵按一下 [方案總管] 中的 [PresentationTier],然後按一下 [加入新項目]。
按一下 [本機資料庫快取] 範本。
在 [名稱] 中輸入 CustomersCache。
按一下 [加入]。
[設定資料同步處理] 對話方塊隨即開啟。
設定資料同步處理
若要設定資料同步處理,請選取伺服器的資料連接,然後選取您要在應用程式中進行本機快取的資料表。 針對本逐步解說,請將伺服器連接設定為 Northwind 資料庫的 SQL Server 版本,並將 Customers 資料表加入至本機快取。 此外,由於您正要將本機資料庫快取加入至 N-Tier 應用程式,因此必須設定進階選項以在不同的專案 (DataService) 中產生伺服器同步處理元件。
若要在 N-Tier 應用程式中設定資料同步處理
將 [伺服器連接] 設定為 Northwind 資料庫的 SQL Server 版本。
按一下 [加入] 按鈕,開啟 [設定離線使用的資料表] 對話方塊。
選取與 [Customers] 資料表相關聯的核取方塊,然後按一下 [確定] (保留所有預設值)。
按一下 [進階]。
選取 [伺服器專案位置] 清單中的 [DataService]。
按一下 [確定]。
同步處理元件、首次同步處理資料 (在專案中建立本機資料庫並填入資料) 隨即產生,並且資料來源組態精靈隨即開啟。
選取 [Customers] 資料表,然後在 [選擇您的資料庫物件] 頁面上選取相關聯的核取方塊。
在 [資料集名稱] 中輸入 LocalNorthwindCustomers,然後按一下 [完成]。
啟用現有資料服務中的同步處理
產生的同步處理元件已加入至 DataService 專案,但仍必須由服務實作。 產生的 SyncContract 包含服務所需的資訊。 此資訊會以註解形式出現在檔案中。 請將必要的資訊複製到服務之 App.config 檔的適當區段。
若要將服務資訊加入至 App.config 檔
按兩下 [方案總管] 中的 CustomersCache.Server.SyncContract 檔,開啟此檔案。
找出類似下列內容的註解程式碼行:
<endpoint address ="" binding="wsHttpBinding" contract="DataService.ICustomersCacheSyncContract"/>
複製該程式碼行,但不包括註解字元。
開啟 DataService 的 App.config 檔 (按兩下 [方案總管] 中的該檔案即可)。
找出 <!-- Metadata Endpoints --> 註解。 將您在步驟 3 中複製的程式碼行加入以 <endpoint address = "mex" 開頭的程式碼行之下。
為您剛貼上的端點位址輸入名稱 (例如,SyncServer),然後您會有類似如下的程式碼:
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> <endpoint address ="SyncServer" binding="wsHttpBinding" contract="DataService.ICustomersCacheSyncContract"/>
在 [建置] 功能表上,按一下 [建置方案]。
若要將同步處理服務作業加入至現有的資料服務
按兩下 [方案總管] 中的 CustomersCache.Server.SyncContract 檔,開啟此檔案。
將類別名稱從 CustomersCacheSyncService 變更為 Service1。 下列程式碼範例會顯示類別宣告,這個類別宣告應該在您變更類別名稱之後顯示 (C# 使用者也必須變更建構函式的名稱)。
Partial Public Class Service1 Inherits Object Implements ICustomersCacheSyncContract ...
public partial class Service1 : object, ICustomersCacheSyncContract {...
對於 C# 使用者:
變更 Service1 的類別宣告 (在 Service1.cs 檔中),使其成為部分類別,讓宣告看起來如下:
public partial class Service1 : object, ICustomersCacheSyncContract { private CustomersCacheServerSyncProvider _serverSyncProvider; public Service1() {...
在 [建置] 功能表上,按一下 [建置方案]。
由於同步處理作業已加入至現有的服務,您必須更新 PresentationTier 專案中的服務參考。
若要更新服務參考
在 [方案總管] 的 [PresentationTier] 專案中,找出 [ServiceReference1]。
以滑鼠右鍵按一下 [ServiceReference1],然後按一下 [更新服務參考]。
修改表單以便從本機快取載入 Customers 資料
展示層中的表單目前會從資料服務中取得其資料。 因此,您必須修改 SQL Server 壓縮的資料庫中的 [客戶] 資料表的本機複本中的資料載入的程式碼。 不過仍會使用 DataService 傳回的資料載入 Orders 資料表。
若要修改 Form1 以便從本機資料庫快取載入 Customers 資料
在 [程式碼編輯器] 中開啟 Form1。
以下列內容置換現有的 Form1_Load 程式碼:
Using DataSvc As New ServiceReference1.Service1Client ' Create a CustomersTableAdapter to load data from ' the local database cache. Dim CustomersTableAdapter As New LocalNorthwindCustomersTableAdapters.CustomersTableAdapter NorthwindDataSet.Customers.Merge(CustomersTableAdapter.GetData) NorthwindDataSet.Orders.Merge(DataSvc.GetOrders) End Using
using (ServiceReference1.Service1Client DataSvc = new ServiceReference1.Service1Client()) { LocalNorthwindCustomersTableAdapters.CustomersTableAdapter customersTableAdapter = new LocalNorthwindCustomersTableAdapters.CustomersTableAdapter(); northwindDataSet.Customers.Merge(customersTableAdapter.GetData()); northwindDataSet.Orders.Merge(DataSvc.GetOrders()); }
測試應用程式
執行應用程式。 擷取資料時,會從本機資料庫快取和資料服務擷取。
若要測試應用程式
按 F5。
來自 Customers 資料表的資料是從本機資料庫擷取,而來自 Orders 資料表的資料則是從資料服務擷取。
關閉表單
同步處理資料
現在展示層已設定為從正確的來源顯示資料表,下一步就是加入程式碼以啟始同步處理。 因此,您必須將按鈕加入至表單,以啟動同步處理處理序。
若要同步處理本機資料庫快取和遠端資料庫之間的資料
以 [設計] 檢視開啟 [Form1]。
按一下表單上的 [Toolstrip],然後將按鈕加入至該 [Toolstrip]。
將按鈕命名為 SyncButton。
按兩下 SyncButton 以建立 SyncButton_Click 事件處理常式。
下列程式碼會開始同步處理。 請將該程式碼加入至事件處理常式。
Dim syncAgent As CustomersCacheSyncAgent = New CustomersCacheSyncAgent Using syncClient As New ServiceReference1.CustomersCacheSyncContractClient syncAgent.RemoteProvider = New Microsoft.Synchronization.Data.ServerSyncProviderProxy(syncClient) Dim syncStats As Microsoft.Synchronization.Data.SyncStatistics = syncAgent.Synchronize NorthwindDataSet.Customers.Merge(New LocalNorthwindCustomersTableAdapters.CustomersTableAdapter().GetData()) Dim syncSummary As String = "Total changes downloaded: " & _ syncStats.TotalChangesDownloaded.ToString() & vbCrLf & _ "Last successful synchronization: " & _ syncStats.SyncCompleteTime.ToString MessageBox.Show(syncSummary) End Using
CustomersCacheSyncAgent syncAgent = new CustomersCacheSyncAgent(); using (ServiceReference1.CustomersCacheSyncContractClient syncClient = new ServiceReference1.CustomersCacheSyncContractClient()) { syncAgent.RemoteProvider = new Microsoft.Synchronization.Data.ServerSyncProviderProxy(syncClient); Microsoft.Synchronization.Data.SyncStatistics syncStats = syncAgent.Synchronize(); northwindDataSet.Customers.Merge(new LocalNorthwindCustomersTableAdapters.CustomersTableAdapter().GetData()); string syncSummary = "Total changes downloaded: " + syncStats.TotalChangesDownloaded.ToString() + Environment.NewLine + "Last successful synchronization: " + syncStats.SyncCompleteTime.ToString(); MessageBox.Show(syncSummary); }
來自 Customers 資料表的資料是從本機資料庫擷取,而來自 Orders 資料表的資料則是從資料服務擷取。
關閉表單
測試應用程式
若要測試應用程式
按 F5。
在應用程式執行時,使用 [伺服器總管]/[資料庫總管] (或其他資料庫管理工具) 連接至遠端伺服器資料庫並修改部分資料錄。
在 [伺服器總管]/[資料庫總管] 中,找出遠端資料庫伺服器上的 [Customers] 資料表 (不是 Northwind.sdf 的連接)。
以滑鼠右鍵按一下 [Customers] 資料表,然後按一下 [顯示資料表資料]。
修改一筆或多筆記錄並認可變更 (巡覽修改過的資料列)。
返回表單並按一下 [SyncButton]。
確認遠端資料庫的修改已同步處理至本機資料庫,並顯示在方格中。
關閉表單 (停止偵錯)。
後續步驟
視應用程式的需求而定,在您將本機資料庫快取加入至 N-Tier 應用程式之後,可能還要執行幾個步驟。 例如,您可以進行下列作業讓這個應用程式發揮更強的功能:
將驗證加入至資料集。 如需詳細資訊,請參閱逐步解說:將驗證加入至 N-Tier 資料應用程式。
啟用雙向同步處理。 如需詳細資訊,請參閱 HOW TO:設定本機和遠端資料庫以進行雙向同步處理。
請參閱
工作
HOW TO:將程式碼加入 N-Tier 應用程式中的資料集
概念
SQL Server Compact 4.0 和 Visual Studio
Visual Studio 2012 中資料應用程式開發的新功能