Compartir vía


Ejecución de una operación de inserción en una tabla en SQL mediante el modelo de canal WCF

El adaptador de SQL detecta un conjunto de operaciones básicas de inserción, selección, actualización y eliminación en SQL Server tablas y vistas de base de datos. Mediante estas operaciones, puede realizar instrucciones SQL Insert, Select, Update y Delete sencillas calificadas por una cláusula Where en una tabla o vista de destino. En este tema se proporcionan instrucciones sobre cómo realizar una operación de inserción en una tabla de base de datos SQL Server mediante el modelo de canal WCF.

Para obtener más información sobre cómo el adaptador admite estas operaciones, vea Insertar, actualizar, eliminar y seleccionar operaciones en tablas y vistas con el adaptador de SQL. Para obtener más información sobre cómo realizar operaciones en SQL Server mediante el modelo de canal WCF, vea Información general del modelo de canal WCF con el adaptador de SQL.

Acerca de los ejemplos usados en este tema

En el ejemplo de este tema se realizan operaciones en la tabla Employee. La tabla Employee se crea ejecutando el script SQL proporcionado con los ejemplos. Para obtener más información sobre los ejemplos, vea Ejemplos para el adaptador de SQL. También se proporciona un ejemplo, EmployeeInsertOp, que se basa en este tema, con los ejemplos del adaptador de SQL.

Insertar mensaje

Para realizar operaciones en la base de datos SQL Server mediante el modelo de canal WCF, debe tener el mensaje de solicitud específico de la operación. El mensaje de solicitud para realizar una operación de inserción en la tabla Employee de la base de datos SQL Server es similar a la siguiente:

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

Este mensaje de solicitud inserta un registro con los detalles siguientes:

Name = Tom Smith  
Designation = Manager  
Salary = 500000  

Debe copiar el mensaje en un archivo, por ejemplo, InsertRequest.xml. Este archivo se usa en este ejemplo para enviar el mensaje de solicitud a SQL Server mediante el adaptador de SQL. Para obtener más información sobre el esquema de mensajes para las operaciones en la tabla, vea Esquemas de mensaje para insertar, actualizar, eliminar y seleccionar operaciones en tablas y vistas.

Creación de una aplicación de canal WCF

En esta sección se proporcionan instrucciones sobre cómo crear una aplicación de canal WCF para realizar una operación de inserción en la tabla Employee.

Para crear una aplicación de canal WCF para insertar registros en la tabla Employee

  1. Cree un proyecto de Visual C# en Visual Studio. En este tema, cree una aplicación de consola.

  2. En el Explorador de soluciones, agregue referencia a Microsoft.Adapters.Sql, Microsoft.ServiceModel.Channels, System.ServiceModely System.Runtime.Serialization.

  3. Abra el archivo Program.cs y agregue los siguientes espacios de nombres:

    • Microsoft.Adapters.Sql

    • Microsoft.ServiceModel.Channels

    • System.ServiceModel

    • System.ServiceModel.Channels

    • System.Xml

  4. Cree el enlace y el punto de conexión.

    SqlAdapterBinding binding = new SqlAdapterBinding();  
    EndpointAddress address = new EndpointAddress("mssql://mysqlserver//mydatabase?");  
    
    
  5. Cree y abra el generador de canales. Esta aplicación envía un mensaje de solicitud a SQL Server y recibe una respuesta, por lo que debe implementar la interfaz 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. Cree y abra el canal.

    IRequestChannel channel = factory.CreateChannel();  
    channel.Open();  
    
  7. Cree y envíe el mensaje de solicitud.

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

    Al crear el mensaje de solicitud, debe especificar la acción de mensaje que indica la acción que realiza el adaptador en la tabla SQL Server. Para realizar una operación de inserción en la tabla Employee, la acción del mensaje es TableOp/Insert/dbo/Employee. Para obtener información sobre cómo puede determinar la acción de mensaje para varias operaciones en tablas, vea Esquemas de mensaje para insertar, actualizar, eliminar y seleccionar operaciones en tablas y vistas.

  8. Obtenga el mensaje de respuesta.

    XmlReader readerOut = messageOut.GetReaderAtBodyContents();  
    XmlDocument doc = new XmlDocument();  
    doc.Load(readerOut);  
    doc.Save("C:\\Response.xml");  
    
  9. Cierre el mensaje, el canal y el generador de canales.

    messageOut.Close();  
    channel.Close();  
    factory.Close();  
    
  10. Compile el proyecto. Después de compilar el proyecto, debe realizar las siguientes tareas:

    • Copie el mensaje de solicitud, InsertRequest.xml, en la misma ubicación que el ejecutable del proyecto. Normalmente, esta ubicación es \bin\Debug\ en el directorio del proyecto.

    • La tabla "Employee" usada en este ejemplo tiene una columna del tipo definido por el usuario (UDT) point. Por lo tanto, antes de ejecutar el proyecto, debe crear el ensamblado para el UDT de punto tal y como se describe en Crear User-Defined Tipos. También debe copiar el archivo DLL del ensamblado en la misma ubicación que el ejecutable del proyecto. Normalmente, esta ubicación es \bin\Debug\ en el directorio del proyecto.

  11. Ejecute la aplicación. El mensaje de respuesta, Response.xml, se guarda en la ubicación especificada en la aplicación. El mensaje de respuesta contiene el identificador del empleado recién agregado y es similar al siguiente:

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

    Dado que la tabla Employee tiene la columna Employee_ID como columna de identidad, la operación Insertar devuelve el valor de la columna de identidad del registro recién insertado. Si no hay ninguna columna de identidad en una tabla, el valor devuelto es NULL.

Consulte también

Desarrollo de aplicaciones SQL mediante el modelo de canal WCF