Condividi tramite


Eseguire un'operazione di inserimento in una tabella in SQL usando il modello di canale WCF

L'adattatore SQL individua un set di operazioni di inserimento, selezione, aggiornamento ed eliminazione in SQL Server tabelle e viste del database. Usando queste operazioni, è possibile eseguire semplici istruzioni SQL Insert, Select, Update ed Delete qualificate da una clausola Where in una tabella o vista di destinazione. Questo argomento fornisce istruzioni su come eseguire un'operazione di inserimento in una tabella di database SQL Server usando il modello di canale WCF.

Per altre informazioni su come la scheda supporta queste operazioni, vedere Inserisci, Aggiorna, Elimina e Seleziona operazioni su tabelle e viste con l'adattatore SQL. Per altre informazioni su come eseguire operazioni su SQL Server usando il modello di canale WCF, vedere Panoramica del modello di canale WCF con l'adattatore SQL.

Informazioni sugli esempi usati in questo argomento

L'esempio in questo argomento esegue operazioni sulla tabella Employee. La tabella Employee viene creata eseguendo lo script SQL fornito con gli esempi. Per altre informazioni sugli esempi, vedere Esempi per l'adapter SQL. Un esempio , EmployeeInsertOp, basato su questo argomento, viene fornito anche con gli esempi dell'adapter SQL.

Messaggio di inserimento

Per eseguire operazioni sul database SQL Server usando il modello di canale WCF, è necessario disporre del messaggio di richiesta specifico per l'operazione. Il messaggio di richiesta per eseguire un'operazione di inserimento nella tabella Employee nel database SQL Server è simile al seguente:

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

Questo messaggio di richiesta inserisce un record con i dettagli seguenti:

Name = Tom Smith  
Designation = Manager  
Salary = 500000  

È necessario copiare il messaggio in un file, ad esempio InsertRequest.xml. Questo file viene usato in questo esempio per inviare il messaggio di richiesta a SQL Server usando l'adapter SQL. Per altre informazioni sullo schema dei messaggi per le operazioni sulla tabella, vedere Schemi dei messaggi per Inserimento, Aggiornamento, Eliminazione e Selezione operazioni su tabelle e visualizzazioni.

Creazione di un'applicazione canale WCF

Questa sezione fornisce istruzioni su come creare un'applicazione canale WCF per eseguire un'operazione di inserimento nella tabella Employee.

Per creare un'applicazione canale WCF per l'inserimento di record nella tabella Employee

  1. Creare un progetto Visual C# in Visual Studio. Per questo argomento, creare un'applicazione console.

  2. Nella Esplora soluzioni aggiungere riferimento a Microsoft.Adapters.Sql, Microsoft.ServiceModel.Channels, System.ServiceModele System.Runtime.Serialization.

  3. Aprire il file Program.cs e aggiungere gli spazi dei nomi seguenti:

    • Microsoft.Adapters.Sql

    • Microsoft.ServiceModel.Channels

    • System.ServiceModel

    • System.ServiceModel.Channels

    • System.Xml

  4. Creare l'associazione e l'endpoint.

    SqlAdapterBinding binding = new SqlAdapterBinding();  
    EndpointAddress address = new EndpointAddress("mssql://mysqlserver//mydatabase?");  
    
    
  5. Creare e aprire la channel factory. Questa applicazione invia un messaggio di richiesta a SQL Server e riceve una risposta, pertanto è necessario implementare l'interfaccia IRequestChannel.

    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();  
    
  6. Creare e aprire il canale.

    IRequestChannel channel = factory.CreateChannel();  
    channel.Open();  
    
  7. Creare e inviare il messaggio di richiesta.

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

    Durante la creazione del messaggio di richiesta, è necessario specificare l'azione del messaggio che indica l'azione eseguita dall'adapter nella tabella SQL Server. Per eseguire un'operazione Di inserimento nella tabella Employee, l'azione del messaggio è TableOp/Insert/dbo/Employee. Per informazioni su come determinare l'azione del messaggio per varie operazioni sulle tabelle, vedere Schemi di messaggio per Inserimento, Aggiornamento, Eliminazione e Selezione operazioni su tabelle e viste.

  8. Ottenere il messaggio di risposta.

    XmlReader readerOut = messageOut.GetReaderAtBodyContents();  
    XmlDocument doc = new XmlDocument();  
    doc.Load(readerOut);  
    doc.Save("C:\\Response.xml");  
    
  9. Chiudere il messaggio, il canale e la channel factory.

    messageOut.Close();  
    channel.Close();  
    factory.Close();  
    
  10. Compilare il progetto. Dopo aver compilato il progetto, è necessario eseguire le attività seguenti:

    • Copiare il messaggio di richiesta, InsertRequest.xml, nello stesso percorso dell'eseguibile del progetto. In genere, questo percorso è \bin\Debug\ nella directory del progetto.

    • Nella tabella "Employee" usata in questo esempio è presente una colonna di tipo definito dall'utente (UDT). Prima di eseguire il progetto, è quindi necessario creare l'assembly per il punto UDT, come descritto in Creazione di tipi di User-Defined. È anche necessario copiare la DLL dell'assembly nello stesso percorso dell'eseguibile del progetto. In genere, questo percorso è \bin\Debug\ nella directory del progetto.

  11. Eseguire l'applicazione. Il messaggio di risposta, Response.xml, viene salvato nel percorso specificato nell'applicazione. Il messaggio di risposta contiene l'ID del dipendente appena aggiunto e è simile al seguente:

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

    Poiché la tabella Employee ha la colonna Employee_ID come colonna identity, l'operazione Inserisci restituisce il valore per la colonna identity del record appena inserito. Se non è presente alcuna colonna identity in una tabella, il valore restituito è NULL.

Vedere anche

Sviluppare applicazioni SQL usando il modello di canale WCF