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.
Wenn Sie eine Prozedur aufrufen, die unter dem Knoten Strongly-Typed Prozeduren im Add-Adapter-Service-Reference-Plug-In aufgeführt ist, liegt die Ausgabe in Form einer stark typisierten Ergebnismenge vor. Dieses Thema enthält Anweisungen zum Erstellen eines WCF-Clients zum Aufrufen gespeicherter Prozeduren in SQL Server, die eine stark typisierte Ergebnismenge zurückgeben.
Hinweis
Wenn Sie Vorgänge für Tabellen mit Spalten mit benutzerdefinierten Typen ausführen, stellen Sie sicher, dass Sie auf Vorgänge in Tabellen und Ansichten mit User-Defined Typen verweisen, bevor Sie mit der Entwicklung der Anwendung beginnen.
Informationen zu den in diesem Thema verwendeten Beispielen
Im Beispiel in diesem Thema wird die gespeicherte Prozedur GET_EMP_DETAILS verwendet. Diese gespeicherte Prozedur verwendet eine Mitarbeiter-ID als Eingabeparameter und gibt alle entsprechenden Spalten für den Mitarbeiter mit dieser ID zurück. Die gespeicherte Prozedur GET_EMP_DETAILS wird erstellt, indem das SQL-Skript ausgeführt wird, das mit den Beispieldateien bereitgestellt wird. Weitere Informationen zu Beispielen finden Sie unter Adapterbeispiele. Ein Beispiel, Execute_TypedStoredProcedure, das auf diesem Thema basiert, wird auch mit den SQL-Adapterbeispielen bereitgestellt.
Die WCF-Clientklasse
Der Name des WCF-Clients, der für das Aufrufen gespeicherter Prozeduren unter dem Knoten "Strongly-Typed Prozeduren " mithilfe des SQL-Adapters generiert wurde, wird in der folgenden Tabelle aufgeführt.
| SQL Server-Datenbankartefakt | Name des WCF-Clients |
|---|---|
| Prozedur (unter dem Knoten Strongly-Typed Prozeduren) | EingegebeneProzeduren_[schema]Client |
[Schema] ist das Schema, zu dem die Prozedur gehört; z. B. "dbo".
Methodensignatur für das Aufrufen gespeicherter Prozeduren
Die folgende Tabelle zeigt die Signatur für die Methode, die zum Aufrufen der gespeicherten Prozeduren verfügbar gemacht wird.
| Vorgang | Methodensignatur |
|---|---|
| Prozedurname | [PROC_NS] [procedure_name](Param1, Param2, ...) |
[PROC_NS] ist der Procedure-Namespace; Beispiel: schemas.microsoft.com.Sql._2008._05.ProceduresResultSets.dbo.GET_EMP_DETAILS.StoredProcedureResultSet0[]
[procedure_name] ist der Name des Verfahrens; z. B. GET_EMP_DETAILS
Die Signatur der Methode zum Aufrufen der GET_EMP_DETAILS-Prozedur wird beispielsweise im folgenden Codeausschnitt gezeigt.
public partial class TypedProcedures_dboClient : System.ServiceModel.ClientBase<TypedProcedures_dbo>, TypedProcedures_dbo{
public schemas.microsoft.com.Sql._2008._05.ProceduresResultSets.dbo.GET_EMP_DETAILS.StoredProcedureResultSet0[]
GET_EMP_DETAILS(System.Nullable<int> emp_id, out int ReturnValue);
}
In diesem Codeausschnitt:
TypedProcedures_dboClientist der Name der Klasse. In diesem Beispiel verwenden Sie diese Klasse, um einen Client zum Aufrufen der gespeicherten Prozedur zu erstellen.public schemas.microsoft.com.Sql._2008._05.ProceduresResultSets.dbo.GET_EMP_DETAILS.StoredProcedureResultSet0[] GET_EMP_DETAILS(System.Nullable<int> emp_id, out int ReturnValue)ist die Methode, die Sie in diesem Beispiel aufrufen, um die gespeicherte Prozedur aufzurufen. Diese gespeicherte Prozedur verwendet eine Mitarbeiter-ID und gibt eine stark typisierte Ergebnismenge zurück.
Erstellen eines WCF-Clients zum Aufrufen einer gespeicherten Prozedur in SQL Server
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 speziell beschrieben, wie man einen WCF-Client erstellt, der eine gespeicherte Prozedur aufruft, deren Resultset stark typisiert ist. In diesem Thema wird beispielsweise die gespeicherte Prozedur GET_EMP_DETAILS aufgerufen. Diese gespeicherte Prozedur wird durch Ausführen des SQL-Skripts erstellt, das für jedes Beispiel bereitgestellt wird.
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 gespeicherte GET_EMP_DETAILS Prozedur. Stellen Sie sicher, dass Sie die Prozedur unter dem Knoten Strongly-Typed Prozeduren auswählen. Weitere Informationen zum Generieren einer WCF-Clientklasse finden Sie unter Generieren eines WCF-Client- oder WCF-Dienstvertrags für SQL Server Artifacts.
Von Bedeutung
Stellen Sie vor dem Generieren der WCF-Clientklasse sicher, dass Sie die Bindungseigenschaft EnableBizTalkCompatibilityMode auf "false" festlegen.
Fügen Sie im Projektmappen-Explorer Verweise auf
Microsoft.Adapters.SqlundMicrosoft.ServiceModel.Channelshinzu.Öffnen Sie die Program.cs Datei, und erstellen Sie einen Client, wie im folgenden Codeausschnitt beschrieben.
TypedProcedures_dboClient client = new TypedProcedures_dboClient("SqlAdapterBinding_TypedProcedures_dbo"); client.ClientCredentials.UserName.UserName = "<Enter username here>"; client.ClientCredentials.UserName.Password = "<Enter username here>";In diesem Codeausschnitt
TypedProcedures_dboClientist der WCF-Client, der in SqlAdapterBindingClient.cs definiert ist. Diese Datei wird vom Add Adapter Service Reference Plug-In generiert.SqlAdapterBinding_TypedProcedures_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 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_DETAILS gespeicherte Prozedur auf, wie im folgenden Codeausschnitt beschrieben.
// Create array of type as specified in the method signature schemas.microsoft.com.Sql._2008._05.ProceduresResultSets.dbo.GET_EMP_DETAILS.StoredProcedureResultSet0[] resultSet = new schemas.microsoft.com.Sql._2008._05.ProceduresResultSets.dbo.GET_EMP_DETAILS.StoredProcedureResultSet0[1]; int returnCode; try { Console.WriteLine("Calling a stored procedure..."); resultSet = client.GET_EMP_DETAILS(10001, out returnCode); //Invoke the stored procedure } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); throw; } Console.WriteLine("The details for the employee with ID '10001' are:"); Console.WriteLine("*************************************************"); for (int i = 0; i < resultSet.Length; i++) { Console.WriteLine("Employee Name : " + resultSet[i].Name); Console.WriteLine("Employee Designation : " + resultSet[i].Designation); Console.WriteLine("Employee Salary : " + resultSet[i].Salary); } Console.WriteLine("*************************************************");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. Der Name, die Bezeichnung und das Gehalt für die Mitarbeiter-ID werden auf der Konsole angezeigt.