搭配 BizTalk Adapter for Oracle Database 使用 ServiceModel 元數據公用程式工具
您可以使用 ServiceModel 元數據公用程式工具 (svcutil.exe) 來產生 WCF 用戶端類別或 WCF 服務合約, (介面) Microsoft BizTalk Adapter for Oracle Database 公開的作業。 執行 svcutil.exe 以產生 WCF 用戶端類別或 WCF 服務合約之後,您可以在程式代碼中包含產生的檔案,並建立所產生類別的實例,或從合約實作 WCF 服務,以在 Oracle 資料庫上執行作業。
使用 svcutil.exe 會要求您提供包含認證的連線 URI。 因為根據預設,Oracle Database 配接器會停用連線 URI 中的認證,所以您必須將 svcutil.exe 設定為使用 Oracle 資料庫配接器的非預設系結。
下列各節說明如何設定 svcutil.exe,以及如何使用 svcutil.exe,以使用 Oracle 資料庫配接器產生 WCF 用戶端程式代碼或 WCF 服務合約。
為非預設系結設定 svcutil.exe
若要將 svcutil.exe 設定為使用非預設系結,您必須建立 svcutil.exe 的本地副本,然後建立或修改 svcutil.exe.config 組態檔的本地副本。
建立資料夾,並將 svcutil.exe 複製到新的資料夾中。 您通常會在 Windows SDK 安裝位置找到 svcutil.exe,特別是 C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin。
在新的資料夾中建立名為 svcutil.exe.config 的檔案。
將系結和用戶端端點新增至 svcutil.exe.config 檔案。 您必須從新資料夾執行 svcutil.exe,以確保使用正確的組態。
重要
用戶端端點的名稱屬性必須指定連接URI中使用的配置。 此值區分大小寫。
<configuration> <system.serviceModel> <client> <!-- the name should match the required scheme of the WS-Metadata Exchange endpoint and the contract should be "IMetadataExchange" --> <endpoint name="oracledb" binding="oracleDBBinding" bindingConfiguration="OracleDBBinding" contract="IMetadataExchange" /> </client> <bindings> <oracleDBBinding> <binding name="OracleDBBinding" acceptCredentialsInUri="true" /> </oracleDBBinding> </bindings> </system.serviceModel> </configuration>
注意
您可以在系結組態中設定 Oracle Database 配接器的任何系結屬性。
如需為 svcutil.exe 設定非預設系結的詳細資訊,請參閱 WCF 檔中的主題。https://go.microsoft.com/fwlink/?LinkId=96077
設定 POLLINGSTMT 作業的非預設系結
若要使用 svcutil.exe 建立 POLLINGSTMT 作業的 WCF 服務合約,除了 acceptCredentialsInUri 之外,還必須設定非預設系結以包含 pollingStatement 屬性。 pollingStatement 必須包含以數據表為目標的SELECT語句。 Oracle Database 配接器會使用這個屬性來產生類別,代表 POLLINGSTMT 作業傳回的強型別結果集。 下列範例顯示系結組態,用來針對以 /SCOTT/EMP 數據表為目標的 POLLINGSTMT 作業產生 WCF 服務合約。
<bindings>
<oracleDBBinding>
<binding name="OracleDBBinding" acceptCredentialsInUri="true"
pollingStatement="SELECT * FROM EMP FOR UPDATE" />
</oracleDBBinding>
</bindings>
使用 svcutil.exe 建立 WCF 用戶端類別或 WCF 服務合約
若要使用 svcutil.exe 產生 WCF 用戶端程式代碼或 WCF 服務合約 (介面) Oracle Database 配接器,您必須提供連線 URI 來指定 WS-Metadata Exchange (MEX) 端點,以及您想要 svcutil.exe 產生程式代碼的作業或作業。 您也必須在連線 URI 中指定 Oracle 資料庫的連線認證。
注意
您必須先將它設定為使用非預設系結,才能搭配 Oracle Database 配接器使用 svcutil.exe;如需如何執行這項操作的詳細資訊,請參閱 設定 Oracle 資料庫配接器的 svcutil.exe。
您可以透過下列方式,在 Oracle 資料庫配接器連線 URI 中指定 MEX 端點和目標作業:
您必須在query_string中包含 「wsdl」 參數。 如果它是query_string中的第一個參數,則會在問號 (?) 之後指定。 如果不是第一個參數,則應該前面加上 ampersand (&) 。
您必須遵循 「wsdl」 參數一或多個 「op」 參數。 每個 「op」 參數前面都會加上連字元 (&) ,並指定目標作業的節點標識符。
下列三個範例示範如何使用 svcutil.exe 以各種作業為目標。
此範例會在 /SCOTT/EMP 數據表上建立 Insert 作業的 WCF 用戶端類別。
.\svcutil “oracledb://User=SCOTT;Password=TIGER@ADAPTER?wsdl&op=http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/EMP/Insert"
本範例會針對 /SCOTT/EMP 數據表上的 Insert 和 Delete 作業建立 WCF 用戶端類別。
.\svcutil “oracledb://User=SCOTT;Password=TIGER@ADAPTER?wsdl&op=http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/EMP/Insert&op=http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/EMP/Delete"
此範例會建立 POLLLINGSTMT 作業的 WCF 服務合約。 (若要使用 svcutil.exe 為 POLLINGSTMT 作業產生 WCF 服務合約,您必須為包含輪詢語句的 svcutil.exe 設定非預設系結。)
.\svcutil “oracledb://User=SCOTT;Password=TIGER@ADAPTER?wsdl&op=http://Microsoft.LobServices.OracleDB/2007/03/POLLINGSTMT"
重要
您必須在命令行上以引號括住連線 URI。 否則,svcutil.exe 嘗試擷取 Oracle 資料庫配接器不支援之作業的元數據。 這類嘗試的結果未定義。
根據預設,svcutil.exe 會將產生的程序代碼放在output.cs檔案中;不過,您可以藉由設定命令行參數來變更輸出檔的名稱,以及 svcutil.exe 使用的其他許多選項。 For more information about the options that svcutil.exe supports, see the "ServiceModel Metadata Utility Tool (Svcutil.exe)" topic in the WCF documentation at https://go.microsoft.com/fwlink/?LinkId=72777.
例如,Svcutil.exe 不提供使用通配符) 來搜尋作業 (的功能。 您必須明確指定您想要鎖定之特定作業的節點識別碼。 您無法指定只參考類別的節點識別碼。 如需 Oracle 資料庫配接器介面之節點識別碼的詳細資訊,請參閱 元數據節點識別碼。
新增配接器服務參考 Visual Studio 外掛程式提供進階流覽和搜尋功能,可大幅簡化產生 WCF 用戶端類別和 WCF 服務合約。 如需新增配接器服務參考外掛程式的詳細資訊,請參閱 產生 Oracle 資料庫解決方案成品的 WCF 用戶端或 WCF 服務合約。