Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können den SQL-Adapter in einer .NET-Anwendung mit dem WCF-Dienstmodell verwenden, um skalare Funktionen in SQL Server aufzurufen. Der Adapter macht die skalaren Funktionen als Methoden verfügbar, die direkt auf SQL Server aufgerufen werden können. Weitere Informationen dazu, wie der Adapter skalare Funktionen unterstützt, finden Sie unter Execute Scalar Functions in SQL Server using the SQL adapter.
Wie in diesem Thema das Aufrufen von Skalarfunktionen mithilfe des WCF-Dienstmodells veranschaulicht wird
In diesem Thema wird das Aufrufen der GET_EMP_ID-Funktion in einer SQL Server-Datenbank veranschaulicht. Die funktion GET_EMP_ID übernimmt die Bezeichnung eines Mitarbeiters in der Tabelle " Mitarbeiter " und gibt die entsprechende Mitarbeiter-ID zurück. Die GET_EMP_ID-Funktion und die Tabelle " Mitarbeiter " werden erstellt, indem das sql-Skript ausgeführt wird, das mit den Beispielen bereitgestellt wird. Weitere Informationen finden Sie unter Adapterbeispiele.
Informationen zu den in diesem Thema verwendeten Beispielen
Im Beispiel in diesem Thema wurde die GET_EMP_ID Skalarfunktion in der Tabelle "Mitarbeiter" aufgerufen. Die GET_EMP_ID-Funktion und die Tabelle " Mitarbeiter " werden erstellt, indem das sql-Skript ausgeführt wird, das mit den Beispielen bereitgestellt wird. Ein Beispiel, ScalarFunction_ServiceModel, das auf diesem Thema basiert, wird auch mit den SQL-Adapterbeispielen bereitgestellt. Weitere Informationen finden Sie unter Adapterbeispiele.
Die WCF-Clientklasse
Der Name des WCF-Clients, der für das Aufrufen der Skalarfunktion in SQL Server mithilfe des SQL-Adapters generiert wird, wird in der folgenden Tabelle aufgeführt.
| SQL Server-Datenbankartefakt | Name des WCF-Clients |
|---|---|
| Skalarfunktion | ScalarFunctions_[SCHEMA]Client |
[SCHEMA] = Sammlung von SQL Server-Artefakten; beispiel: dbo.
Methodensignatur für das Aufrufen von Skalarfunktionen
In der folgenden Tabelle sind die Methodensignaturen für die grundlegenden Vorgänge in einer Tabelle aufgeführt. Die Signaturen sind für eine Ansicht identisch, mit der Ausnahme, dass der Ansichtsnamespace und der Name diejenigen der Tabelle ersetzen.
| Vorgang | Methodensignatur |
|---|---|
| Skalarer Funktionsname | public <return_type><scalar_function_name>(param1, param2, ...) |
< > retrun_type = Rückgabetyp, der in der Funktionsdefinition definiert ist
< > scalar_function_name = Name der Skalarfunktion.
Der folgende Code zeigt beispielsweise die Methodensignaturen für eine WCF-Clientklasse, die für die GET_EMP_ID Skalarfunktionen generiert wurde, im dbo-Schema, das die Mitarbeiterbezeichnung als Parameter annimmt und eine Mitarbeiter-ID (ganze Zahl) zurückgibt.
public partial class ScalarFunctions_dboClient : System.ServiceModel.ClientBase<ScalarFunctions_dbo>, ScalarFunctions_dbo {
public System.Nullable<int> GET_EMP_ID(string emp_desig);
}
In diesem Codeausschnitt ist ScalarFunctions_dboClient der Name der WCF-Klasse in der SqlAdapterBindingClient.cs, die vom Add Adapter Service Reference Plug-In generiert wird.
Parameter für das Aufrufen von Skalarfunktionen
Die Parameter für die Methoden, die vom SQL-Adapter zum Aufrufen einer Skalarfunktion verfügbar gemacht werden, entsprechen den Parametern, die in der Skalarfunktionsdefinition in SQL Server definiert sind. Beispielsweise ist der Parameter zum Aufrufen der GET_EMP_ID Skalarfunktion emp_desig und übernimmt die Bezeichnung eines Mitarbeiters.
Auch hier entspricht der Rückgabewert einer Skalarfunktion dem Rückgabewert, der in der Skalarfunktionsdefinition in SQL Server definiert ist. Der Rückgabewert für die funktion GET_EMP_ID ist z. B. die ID eines Mitarbeiters vom Typ integer.
Erstellen eines WCF-Clients zum Aufrufen skalarer Funktionen
Der allgemeine Satz von Aktionen, die zum Ausführen eines Vorgangs auf SQL Server mit einem WCF-Client erforderlich sind, umfasst eine Reihe von Aufgaben, die in der Übersicht über das WCF-Dienstmodell mit dem SQL-Adapter beschrieben sind. In diesem Abschnitt wird beschrieben, wie Sie einen WCF-Client erstellen, um die GET_EMP_ID Skalarfunktion aufzurufen.
So erstellen Sie einen WCF-Client
Erstellen Sie ein Visual C#-Projekt in Visual Studio. Erstellen Sie für dieses Thema eine Konsolenanwendung.
Generieren Sie die WCF-Clientklasse für die GET_EMP_ID Skalarfunktion. Weitere Informationen zum Generieren einer WCF-Clientklasse finden Sie unter Generieren eines WCF-Client- oder WCF-Dienstvertrags für SQL Server Artifacts.
Fügen Sie im Projektmappen-Explorer Verweise auf
Microsoft.Adapters.SqlundMicrosoft.ServiceModel.Channelshinzu.Öffnen Sie die Program.cs, und erstellen Sie einen Client, wie im folgenden Codeausschnitt beschrieben.
ScalarFunctions_dboClient client = new ScalarFunctions_dboClient("SqlAdapterBinding_ScalarFunctions_dbo"); client.ClientCredentials.UserName.UserName = "<Enter user name here>"; client.ClientCredentials.UserName.Password = "<Enter password here>";In diesem Codeausschnitt
ScalarFunctions_dboClientist der WCF-Client, der in SqlAdapterBindingClient.cs definiert ist. Diese Datei wird vom Add Adapter Service Reference Plug-In generiert.SqlAdapterBinding_ScalarFunctions_dboist der Name der Clientendpunktkonfiguration und wird in der app.configdefiniert. Diese Datei wird auch vom Add Adapter Service Reference Plug-In generiert und enthält die Bindungseigenschaften und andere Konfigurationseinstellungen.Hinweis
In diesem Codeausschnitt verwenden Sie die Bindungs- und Endpunktadresse aus der Konfigurationsdatei. Sie können diese Werte auch explizit in Ihrem Code angeben. Weitere Informationen zu den verschiedenen Methoden zum Angeben der anschließenden Clientbindung finden Sie unter Konfigurieren einer Clientbindung für den SQL-Adapter.
Öffnen Sie den Client wie im folgenden Codeausschnitt beschrieben:
try { Console.WriteLine("Opening Client..."); client.Open(); } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); throw; }Rufen Sie die GET_EMP_ID-Funktion auf, um die ID für einen Mitarbeiter mit der Bezeichnung "Manager" abzurufen.
Console.WriteLine("Invoking the GET_EMP_ID function"); string emp_designation = "Manager"; try { System.Nullable<int> emp_id = client.GET_EMP_ID(emp_designation); Console.WriteLine("The Employee ID for the employee with 'Manager' designation is:" + emp_id); } catch (Exception e) { Console.WriteLine("Exception: " + e.Message); throw; }Hinweis
Aus Gründen der Einfachheit hat die Tabelle " Mitarbeiter " nur einen Mitarbeiter mit der Bezeichnung "Vorgesetzter". Wenn Ihre Zieltabelle mehr Mitarbeiter mit derselben Bezeichnung hat, müssen Sie die Funktion entsprechend definieren.
Schließen Sie den Client wie im folgenden Codeausschnitt beschrieben:
client.Close(); Console.WriteLine("Press any key to exit..."); Console.ReadLine();Erstellen Sie das Projekt, und führen Sie es aus. Die Anwendung zeigt die Mitarbeiter-ID des Mitarbeiters mit der Bezeichnung "Manager" an.