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.
Der SQL-Adapter ermittelt eine Reihe grundlegender Insert-, Select-, Update- und Delete-Vorgänge in SQL Server-Datenbanktabellen und -ansichten. Mithilfe dieser Vorgänge können Sie einfache SQL Insert-, Select-, Update- und Delete-Anweisungen ausführen, die durch eine Where-Klausel in einer Zieltabelle oder -Ansicht qualifiziert sind. Dieses Thema enthält Anweisungen zum Ausführen eines Einfügevorgangs in einer SQL Server-Datenbanktabelle mithilfe des WCF-Kanalmodells.
Weitere Informationen dazu, wie der Adapter diese Vorgänge unterstützt, finden Sie unter Einfügen, Aktualisieren, Löschen und Auswählen von Vorgängen in Tabellen und Ansichten mit dem SQL-Adapter. Weitere Informationen zum Ausführen von Vorgängen auf SQL Server mithilfe des WCF-Kanalmodells finden Sie unter Übersicht über das WCF-Kanalmodell mit dem SQL-Adapter.
Informationen zu den in diesem Thema verwendeten Beispielen
Im Beispiel in diesem Thema werden Vorgänge in der Tabelle "Mitarbeiter" ausgeführt. Die Tabelle "Mitarbeiter" wird durch Ausführen des SQL-Skripts erstellt, das mit den Beispielen bereitgestellt wird. Weitere Informationen zu Beispielen finden Sie unter Beispiele für den SQL-Adapter. Ein Beispiel, EmployeeInsertOp, das auf diesem Thema basiert, wird auch mit den SQL-Adapterbeispielen bereitgestellt.
Einfügen der Nachricht
Um Vorgänge in der SQL Server-Datenbank mithilfe des WCF-Kanalmodells auszuführen, müssen Sie über die Anforderungsnachricht verfügen, die für den Vorgang spezifisch ist. Die Anforderungsmeldung zum Ausführen eines Einfügevorgangs in der Tabelle "Mitarbeiter" in der SQL Server-Datenbank sieht wie folgt aus:
<Insert xmlns="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/Employee">
<Rows>
<Employee xmlns="http://schemas.microsoft.com/Sql/2008/05/Types/Tables/dbo">
<Name>Tom Smith</Name>
<Designation>Manager</Designation>
<Salary>500000</Salary>
</Employee>
</Rows>
</Insert>
Diese Anforderungsnachricht fügt einen Datensatz mit folgenden Details ein:
Name = Tom Smith
Designation = Manager
Salary = 500000
Sie müssen die Nachricht in eine Datei kopieren, z. B. InsertRequest.xml. Diese Datei wird in diesem Beispiel verwendet, um die Anforderungsnachricht mithilfe des SQL-Adapters an SQL Server zu senden. Weitere Informationen zum Nachrichtenschema für Vorgänge in der Tabelle finden Sie unter "Nachrichtenschemas für Einfügen", "Aktualisieren", "Löschen" und "Auswählen von Vorgängen in Tabellen und Ansichten".
Erstellen einer WCF-Kanalanwendung
Dieser Abschnitt enthält Anweisungen zum Erstellen einer WCF-Kanalanwendung zum Ausführen eines Einfügevorgangs in der Tabelle "Mitarbeiter".
So erstellen Sie eine WCF-Kanalanwendung zum Einfügen von Datensätzen in die Tabelle "Mitarbeiter"
Erstellen Sie ein Visual C#-Projekt in Visual Studio. Erstellen Sie für dieses Thema eine Konsolenanwendung.
Fügen Sie im Projektmappen-Explorer Verweise auf
Microsoft.Adapters.Sql,Microsoft.ServiceModel.Channels,System.ServiceModelundSystem.Runtime.Serializationhinzu.Öffnen Sie die datei Program.cs, und fügen Sie die folgenden Namespaces hinzu:
Microsoft.Adapters.SqlMicrosoft.ServiceModel.ChannelsSystem.ServiceModelSystem.ServiceModel.ChannelsSystem.Xml
Erstellen Sie die Bindung und den Endpunkt.
SqlAdapterBinding binding = new SqlAdapterBinding(); EndpointAddress address = new EndpointAddress("mssql://mysqlserver//mydatabase?");Erstellen und öffnen Sie die Kanalfabrik. Diese Anwendung sendet Anforderungsnachricht an SQL Server und empfängt eine Antwort, daher müssen Sie die IRequestChannel-Schnittstelle implementieren.
ChannelFactory<IRequestChannel> factory = new ChannelFactory<IRequestChannel>(binding, address); factory.Credentials.UserName.UserName = "<Enter user name here>"; factory.Credentials.UserName.Password = "<Enter password here>"; factory.Open();Erstellen und öffnen Sie den Kanal.
IRequestChannel channel = factory.CreateChannel(); channel.Open();Erstellen und senden Sie die Anforderungsnachricht.
XmlReader readerIn; Console.WriteLine("Creating the message"); try { readerIn = XmlReader.Create("InsertRequest.xml"); Console.WriteLine("Reader created"); } catch (Exception ex) { Console.WriteLine("Exception: " + ex.Message); throw; } Message messageIn = Message.CreateMessage(MessageVersion.Default, "TableOp/Insert/dbo/Employee", readerIn); Message messageOut = channel.Request(messageIn);Beim Erstellen der Anforderungsnachricht müssen Sie die Meldungsaktion angeben, die die Aktion angibt, die der Adapter in der SQL Server-Tabelle ausführt. Zum Ausführen eines Einfügevorgangs in der Tabelle "Mitarbeiter" lautet die Meldungsaktion
TableOp/Insert/dbo/Employee. Informationen dazu, wie Sie die Nachrichtenaktion für verschiedene Vorgänge in Tabellen bestimmen können, finden Sie unter "Nachrichtenschemas für Einfügen", "Aktualisieren", "Löschen" und "Auswählen von Vorgängen in Tabellen und Ansichten".Rufen Sie die Antwortnachricht ab.
XmlReader readerOut = messageOut.GetReaderAtBodyContents(); XmlDocument doc = new XmlDocument(); doc.Load(readerOut); doc.Save("C:\\Response.xml");Schließen Sie die Nachricht, den Kanal und die Kanalfabrik.
messageOut.Close(); channel.Close(); factory.Close();Projekt erstellen. Nach dem Erstellen des Projekts müssen Sie die folgenden Aufgaben ausführen:
Kopieren Sie die Anforderungsnachricht, InsertRequest.xml, an demselben Speicherort wie die ausführbare Datei des Projekts. Dieser Speicherort ist in der Regel \bin\Debug\ unter Ihrem Projektverzeichnis.
Die in diesem Beispiel verwendete Tabelle "Employee" weist eine Spalte mit benutzerdefiniertem Point-Typ (UDT) auf. Vor dem Ausführen des Projekts müssen Sie also die Assembly für das Point UDT erstellen, wie unter Creating User-Defined Types beschrieben. Sie müssen auch die Assembly-DLL an demselben Speicherort wie die ausführbare Datei des Projekts kopieren. Dieser Speicherort ist in der Regel \bin\Debug\ unter Ihrem Projektverzeichnis.
Führen Sie die Anwendung aus. Die Antwortnachricht, Response.xml, wird an dem Speicherort gespeichert, den Sie in der Anwendung angegeben haben. Die Antwortnachricht enthält die ID des neu hinzugefügten Mitarbeiters und sieht wie folgt aus:
<InsertResponse xmlns="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/Employee"> <InsertResult> <long xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">10006</long> </InsertResult> </InsertResponse>Da die Tabelle "Mitarbeiter" die Employee_ID Spalte als Identitätsspalte aufweist, gibt der Insert-Vorgang den Wert für die Identitätsspalte des neu eingefügten Datensatzes zurück. Wenn in einer Tabelle keine Identitätsspalte vorhanden ist, ist der Rückgabewert NULL.
Siehe auch
Entwickeln von SQL-Anwendungen mithilfe des WCF-Kanalmodells