Freigeben über


Verwenden des ServiceModel-Metadatenhilfsprogramms mit dem BizTalk-Adapter für Oracle-Datenbank

Sie können das ServiceModel Metadata Utility Tool (svcutil.exe) verwenden, um eine WCF-Clientklasse oder einen WCF-Dienstvertrag (Schnittstelle) für Vorgänge zu generieren, die der Microsoft BizTalk-Adapter für Oracle-Datenbank verfügbar macht. Nachdem Sie svcutil.exe ausgeführt haben, um entweder eine WCF-Clientklasse oder einen WCF-Dienstvertrag zu generieren, können Sie die generierte Datei in Ihren Code einschließen und Instanzen der generierten Klasse erstellen oder einen WCF-Dienst aus dem Vertrag implementieren, um Vorgänge für die Oracle-Datenbank auszuführen.

Wenn Sie svcutil.exe verwenden, müssen Sie einen Verbindungs-URI angeben, der Anmeldeinformationen enthält. Da der Oracle Database-Adapter standardmäßig Anmeldeinformationen im Verbindungs-URI deaktiviert, müssen Sie svcutil.exe konfigurieren, um eine nicht standardmäßige Bindung für den Oracle Database-Adapter zu verwenden.

In den folgenden Abschnitten erfahren Sie, wie Sie svcutil.exe konfigurieren und svcutil.exe verwenden, um WCF-Clientcode oder einen WCF-Dienstvertrag mit dem Oracle Database-Adapter zu generieren.

Konfigurieren svcutil.exe für eine nicht standardmäßige Bindung

Um svcutil.exe für die Verwendung einer nicht standardmäßigen Bindung zu konfigurieren, müssen Sie eine lokale Kopie von svcutil.exe erstellen und dann eine lokale Kopie der svcutil.exe.config-Konfigurationsdatei erstellen oder ändern.

  1. Erstellen Sie einen Ordner, und kopieren Sie svcutil.exe in den neuen Ordner. In der Regel finden Sie svcutil.exe am Windows SDK-Installationsspeicherort, insbesondere C:\Programme\Microsoft SDKs\Windows\v6.0\Bin.

  2. Erstellen Sie eine Datei namens svcutil.exe.config im neuen Ordner.

  3. Fügen Sie der datei svcutil.exe.config eine Bindung und einen Clientendpunkt hinzu. Sie müssen svcutil.exe aus dem neuen Ordner ausführen, um sicherzustellen, dass die richtige Konfiguration verwendet wird.

    Wichtig

    Das name-Attribut des Clientendpunkts muss das schema angeben, das im Verbindungs-URI verwendet wird. Bei diesem Wert wird die Groß-/Kleinschreibung beachtet.

    <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>
    

Hinweis

Sie können jede der Bindungseigenschaften des Oracle Database-Adapters in der Bindungskonfiguration festlegen.

Weitere Informationen zum Konfigurieren einer nicht standardmäßigen Bindung für svcutil.exe finden Sie im Thema "Benutzerdefinierter Endpunkt für sichere Metadaten" in der WCF-Dokumentation unter https://go.microsoft.com/fwlink/?LinkId=96077.

Konfigurieren einer nicht standardmäßigen Bindung für den POLLINGSTMT-Vorgang

Um svcutil.exe zum Erstellen eines WCF-Dienstvertrags für den POLLINGSTMT-Vorgang zu verwenden, müssen Sie die nicht standardmäßige Bindung so konfigurieren, dass zusätzlich zu acceptCredentialsInUri die eigenschaft pollingStatement eingeschlossen wird. Das pollingStatement muss die SELECT-Anweisung enthalten, die auf die Tabelle abzielt. Der Oracle Database-Adapter verwendet diese Eigenschaft, um die Klasse zu generieren, die das stark typisierte Resultset darstellt, das der POLLINGSTMT-Vorgang zurückgibt. Das folgende Beispiel zeigt eine Bindungskonfiguration, die verwendet wird, um einen WCF-Dienstvertrag für einen POLLINGSTMT-Vorgang zu generieren, der auf die Tabelle /SCOTT/EMP ausgerichtet ist.

<bindings>
    <oracleDBBinding>
        <binding name="OracleDBBinding" acceptCredentialsInUri="true"
                                   pollingStatement="SELECT * FROM EMP FOR UPDATE" />
    </oracleDBBinding>
</bindings>

Erstellen einer WCF-Clientklasse oder eines WCF-Dienstvertrags mit svcutil.exe

Wenn Sie svcutil.exe verwenden möchten, um WCF-Clientcode oder einen WCF-Dienstvertrag (Schnittstelle) für den Oracle Database-Adapter zu generieren, müssen Sie einen Verbindungs-URI angeben, der einen WS-Metadata Exchange-Endpunkt (MEX) und den Vorgang oder die Vorgänge angibt, für die bzw. die Sie code generieren svcutil.exe. Sie müssen auch Die Anmeldeinformationen für die Oracle-Datenbank im Verbindungs-URI angeben.

Hinweis

Bevor Sie svcutil.exe mit dem Oracle Database-Adapter verwenden können, müssen Sie ihn für die Verwendung einer nicht standardmäßigen Bindung konfigurieren. Weitere Informationen dazu finden Sie unter Konfigurieren von svcutil.exe für den Oracle Database Adapter.

Sie geben einen MEX-Endpunkt und Zielvorgänge im Verbindungs-URI des Oracle Database-Adapters auf folgende Weise an:

  • Sie müssen den Parameter "wsdl" in die query_string einschließen. Wenn es sich um den ersten Parameter im query_string handelt, wird er direkt nach dem Fragezeichen (?) angegeben. Wenn es sich nicht um den ersten Parameter handelt, sollte ihm ein ampersand (&) vorangestellt werden.

  • Sie müssen dem Parameter "wsdl" durch einen oder mehrere "op"-Parameter folgen. Jedem op-Parameter wird ein ampersand (&) vorangestellt und gibt die Knoten-ID eines Zielvorgangs an.

    Die folgenden drei Beispiele zeigen, wie verschiedene Vorgänge mithilfe von svcutil.exe als Ziel verwendet werden.

    In diesem Beispiel wird eine WCF-Clientklasse für einen Insert-Vorgang für die Tabelle /SCOTT/EMP erstellt.

    .\svcutil "oracledb://User=SCOTT; Password=TIGER@ADAPTER?wsdl&op=http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/EMP/Insert"

    In diesem Beispiel wird eine WCF-Clientklasse für die Insert- und delete-Vorgänge für die Tabelle /SCOTT/EMP erstellt.

    .\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"

    In diesem Beispiel wird ein WCF-Dienstvertrag für den POLLLINGSTMT-Vorgang erstellt. (Um svcutil.exe zum Generieren eines WCF-Dienstvertrags für den POLLINGSTMT-Vorgang zu verwenden, müssen Sie eine nicht standardmäßige Bindung für svcutil.exe konfigurieren, die eine Abruf-Anweisung enthält.)

    .\svcutil "oracledb://User=SCOTT; Password=TIGER@ADAPTER?wsdl&op=http://Microsoft.LobServices.OracleDB/2007/03/POLLINGSTMT"

Wichtig

Sie müssen den Verbindungs-URI in Anführungszeichen in der Befehlszeile platzieren. Andernfalls versucht svcutil.exe, Metadaten für Vorgänge abzurufen, die der Oracle Database-Adapter nicht unterstützt. Die Ergebnisse eines solchen Versuchs sind undefiniert.

Standardmäßig platziert svcutil.exe den generierten Code in der output.cs-Datei. Sie können jedoch den Namen der Ausgabedatei und viele andere Optionen ändern, die svcutil.exe verwendet, indem Sie Befehlszeilenoptionen festlegen. Weitere Informationen zu den Optionen, die svcutil.exe unterstützt, finden Sie im Thema "ServiceModel Metadata Utility Tool (Svcutil.exe)" in der WCF-Dokumentation unter https://go.microsoft.com/fwlink/?LinkId=72777.

Svcutil.exe bietet nicht die Möglichkeit, nach Vorgängen zu suchen (z. B. mithilfe von Wildcardzeichen). Sie müssen explizit Knoten-IDs für die spezifischen Vorgänge angeben, auf die Sie abzielen möchten. Sie können keine Knoten-IDs angeben, die nur auf Kategorien verweisen. Weitere Informationen zu den Knoten-IDs, die vom Oracle Database-Adapter angezeigt werden, finden Sie unter Metadatenknoten-IDs.

Das Visual Studio-Plug-In Adapterdienstverweis hinzufügen bietet erweiterte Such- und Suchfunktionen, die das Generieren einer WCF-Clientklasse und eines WCF-Dienstvertrags erheblich vereinfachen können. Weitere Informationen zum Add Adapter Service Reference Plug-In finden Sie unter Generieren eines WCF-Clients oder eines WCF-Dienstvertrags für Oracle Database-Lösungsartefakte.

Weitere Informationen

Nachrichten und Nachrichtenschemas für BizTalk Adapter für Oracle Database