Compartir a través de


Tutorial: Actualizar registros mediante procedimientos almacenados

No puede llamar a un procedimiento almacenado en una base de datos de SQL Server directamente de LightSwitch, pero puede crear un servicio de (RIA) de la aplicación de internet de (WCF) Rich de Windows Communication Foundation para exponer procedimientos almacenados y después para tener acceso al servicio de aplicación de LightSwitch.Este tutorial muestra cómo, insertar, actualizar y eliminar registros de cliente en una aplicación de LightSwitch mediante procedimientos almacenados y un servicio de WCF RIA.

Muchos administradores de bases de datos no concede acceso directo a las tablas, en su lugar expone las vistas readonly y proporcionando procedimientos almacenados para insertar, actualizar, y los registros de cancelación.LightSwitch no reconoce los procedimientos almacenados, en cualquier base de datos que se base en procedimientos almacenados para actualizar los registros puede al principio aparecer esté inutilizable.Si hace el trabajo algún adicional, puede utilizar de hecho estas bases de datos de LightSwitch.

Requisitos previos

Este tutorial utiliza la base de datos Northwind del tutorial de Paseo guiado por LightSwitch.Para obtener más información, vea Instalar la base de datos de ejemplo Northwind.

Crear procedimientos almacenados

En la mayoría de los casos, tendrá acceso a los procedimientos almacenados que ya existen en una base de datos.La base de datos Northwind no tiene los procedimientos almacenados necesarios para insertar, actualizar, eliminar los registros del cliente, por lo que debe agregarlos.

Para agregar procedimientos almacenados

  1. En la barra de menú, elija Vista, El Explorador de objetos de SQL Server.

  2. En la ventana del El Explorador de objetos de SQL Server, expanda el nodo de la base de datos NORTHWIND y, a continuación Programación.

  3. Expanda el nodo Programación y, a continuación Procedimientos almacenados.

  4. Abrir el menú contextual para Procedimientos almacenados y, a continuación Agregue el nuevo procedimiento almacenado.

  5. En el Editor de código, reemplace el contenido por el siguiente código de Transact-SQL, y elija el botón UPDATE.

    CREATE Procedure [dbo].[InsertCustomer]
        @CustomerID nchar(5),
        @CompanyName nvarchar(40),
        @ContactName nvarchar(30),
        @ContactTitle nvarchar(30),
        @Address nvarchar(60),
        @City nvarchar(15),
        @Region nvarchar(15),
        @PostalCode nvarchar(10),
        @Country nvarchar(15),
        @Phone nvarchar(24),
        @Fax nvarchar(24)
    AS
    INSERT INTO [dbo].[Customers]
               ([CustomerID]
               ,[CompanyName]
               ,[ContactName]
               ,[ContactTitle]
               ,[Address]
               ,[City]
               ,[Region]
               ,[PostalCode]
               ,[Country]
               ,[Phone]
               ,[Fax])
         VALUES
               (@CustomerID
               ,@CompanyName
               ,@ContactName
               ,@ContactTitle
               ,@Address
               ,@City
               ,@Region
               ,@PostalCode
               ,@Country
               ,@Phone
               ,@Fax)
    
  6. En el cuadro de diálogo Obtener una vista previa de las actualizaciones de la base de datos, elija el botón Actualizar base de datos.

    El procedimiento almacenado InsertCustomer se agrega a la base de datos.

  7. Abrir el menú contextual para Procedimientos almacenados y, a continuación Agregue el nuevo procedimiento almacenado.

  8. En el Editor de código, reemplace el contenido por el siguiente código de Transact-SQL, y elija el botón UPDATE.

    CREATE PROCEDURE [dbo].[UpdateCustomer]
        @CustomerID nchar(5),
        @CompanyName nvarchar(40),
        @ContactName nvarchar(30),
        @ContactTitle nvarchar(30),
        @Address nvarchar(60),
        @City nvarchar(15),
        @Region nvarchar(15),
        @PostalCode nvarchar(10),
        @Country nvarchar(15),
        @Phone nvarchar(24),
        @Fax nvarchar(24)
    AS
    UPDATE [dbo].[Customers]
       SET [CompanyName] = @CompanyName
          ,[ContactName] = @ContactName
          ,[ContactTitle] = @ContactTitle
          ,[Address] = @Address
          ,[City] = @City
          ,[Region] = @Region
          ,[PostalCode] = @PostalCode
          ,[Country] = @Country
          ,[Phone] = @Phone
          ,[Fax] = @Fax
     WHERE CustomerID=@CustomerID
    
  9. En el cuadro de diálogo Obtener una vista previa de las actualizaciones de la base de datos, elija el botón Actualizar base de datos.

    El procedimiento almacenado UpdateCustomer se agrega a la base de datos.

  10. Abrir el menú contextual para Procedimientos almacenados y, a continuación Agregue el nuevo procedimiento almacenado.

  11. En el Editor de código, reemplace el contenido por el siguiente código de Transact-SQL, y elija el botón UPDATE.

    CREATE PROCEDURE [dbo].[DeleteCustomer]
        @CustomerID nchar(5)
    AS
    
    DELETE FROM [dbo].[Customers]
     WHERE CustomerID=@CustomerID
    
  12. En el cuadro de diálogo Obtener una vista previa de las actualizaciones de la base de datos, elija el botón Actualizar base de datos.

    El procedimiento almacenado DeleteCustomer se agrega a la base de datos.

Crear un entity data model

El paso siguiente es crear un modelo de datos de Entity Framework insertar, actualizar, y eliminar registros mediante los procedimientos almacenados que acaba de agregar.

Para crear un modelo de datos

  1. En la barra de menú, elija Archivo, Nuevo, Proyecto.

  2. En el cuadro de diálogo nuevo proyecto, expanda Visual Basic o el nodo Visual c# y, a continuación la plantilla biblioteca de clases.

  3. En el cuadro de texto Nombre, entre en NorthwindService, y elija el botón Aceptar.

  4. En Explorador de soluciones, abra el menú contextual para el nodo MyProject y, a continuación Abrir.

  5. En la lista Marco de trabajo de destino, elija .NET Framework 4.

  6. En Explorador de soluciones, abra el menú contextual para NorthwindService, elija Add y, a continuación Nuevo elemento.

  7. En el cuadro de diálogo agregar nuevo elemento, elija la plantilla Entity Data Model de ADO.NET.

  8. En el cuadro de texto Nombre, entre en Northwind.edmx, y elija el botón Add.

  9. En Asistente para Entity Data Model, elija el icono Genere de base de datos, y elija el botón siguiente.

  10. En la página Elija la conexión de datos, elija el botón nueva conexión.

  11. En el cuadro de diálogo Propiedades de la conexión, en el cuadro de texto Nombre del servidor, escriba el nombre del servidor en la base de datos Northwind está instalada.

    Nota para J#Nota para J#

    Puede encontrar el nombre en El Explorador de objetos de SQL Server.

  12. En el cuadro de texto Seleccione o escriba el nombre de la base de datos, escriba en Northwind.

  13. Elija el botón Aceptar, y elija el botón siguiente.

  14. En la página Elija los objetos de base de datos y valores de The, expanda el nodo tablas, y seleccione la casilla Customers.

  15. Expanda el nodo Procedimientos almacenados y funciones, active las casillas DeleteCustomer, InsertCustomer, y UpdateCustomer, y después elija el botón finalizar.

    Se genera el modelo de la entidad, y el diagrama de base de datos Northwind.edmx aparece.

    [!NOTA]

    Si aparece un cuadro de diálogo advertencia de seguridad, elija el botón Aceptar para ejecutar la plantilla.

  16. Abrir el menú contextual para la entidad Cliente y, a continuación Asignación de procedimiento almacenado.

  17. En la ventana Detalles de la asignación, en <Select Insert Function> la lista, elija InsertCustomer.

  18. En <Select Update Function> la lista, elija UpdateCustomer.

  19. En <Select Delete Function> la lista, elija DeleteCustomer.

  20. Cierre el diseñador Northwind.edmx.

  21. En Explorador de soluciones, elija el botón de la barra de herramientas mostrar todos los archivos.

  22. Expanda el nodo para Northwind.edmx, y se elimina los archivos Northwind.tt y Northwind.Context.tt.

  23. Abra el archivo Northwind.edmx, y resalta el espacio en blanco fuera de la entidad customer.

  24. En la ventana propiedades, cambie el valor de la propiedad Estrategia de generación de código a Predeterminada.

  25. En la barra de menú, elija Compilación, Compilación NorthwindService.

    Ya tiene un modelo de datos de Entity Framework insertar, actualizar, y eliminar registros mediante los procedimientos almacenados.

Cree WCF RIA Services

Si crea un servicio de WCF RIA, la aplicación de LightSwitch puede utilizar el modelo de datos de Entity Framework como origen de datos.

Para crear un servicio

  1. En Explorador de soluciones, abra el menú contextual para el proyecto NorthwindService, elija Add y, a continuación Nuevo elemento.

  2. En el cuadro de diálogo agregar nuevo elemento, elija la plantilla Clase de servicio de dominio.

  3. En el cuadro de texto Nombre, entre en NorthwindService, y elija el botón Add.

  4. En el cuadro de diálogo Agregue la nueva clase de servicio de dominio, elija el botón Aceptar.

  5. En Explorador de soluciones, abra el menú contextual para el Servicio de Northwind y, a continuación Agregar referencia.

  6. Elija el nodo Extensiones, active la casilla System.ServiceModel.DomainServices.EntityFramework, y después elija el botón Aceptar.

  7. Agregue el código siguiente a la clase NorthwindService:

    Imports System.ServiceModel.DomainServices.EntityFramework
    
    Public Class NorthwindService
        Inherits LinqToEntitiesDomainService(Of NorthwindEntities)
    
        <Query(IsDefault:=True)>
        Public Function GetCustomers() As IQueryable(Of Customer)
            Return Me.ObjectContext.Customers
        End Function
    
        Public Sub InsertCustomer(ByVal customer As Customer)
            If ((customer.EntityState = EntityState.Detached) = False) Then
                Me.ObjectContext.ObjectStateManager.
                    ChangeObjectState(customer, EntityState.Added)
            Else
                Me.ObjectContext.Customers.AddObject(customer)
            End If
        End Sub
    
        Public Sub UpdateCustomer(ByVal currentCustomer As Customer)
            Me.ObjectContext.Customers.AttachAsModified(currentCustomer,
                Me.ChangeSet.GetOriginal(currentCustomer))
        End Sub
    
        Public Sub DeleteCustomer(ByVal customer As Customer)
            If ((customer.EntityState = EntityState.Detached) = False) Then
                Me.ObjectContext.ObjectStateManager.
                    ChangeObjectState(customer, EntityState.Deleted)
            Else
                Me.ObjectContext.Customers.Attach(customer)
                Me.ObjectContext.Customers.DeleteObject(customer)
            End If
        End Sub
    End Class
    
    namespace NorthwindService
    {
        public class NorthwindService : LinqToEntitiesDomainService<NorthwindEntities>
        {
            [Query(IsDefault = true)]
            public IQueryable<Customer> GetCustomers()
            {
                return this.ObjectContext.Customers;
            }
    
            public void InsertCustomer(Customer customer)
            {
                if ((customer.EntityState != EntityState.Detached))
                {
                    this.ObjectContext.ObjectStateManager.
                        ChangeObjectState(customer, EntityState.Added);
                }
                else
                {
                    this.ObjectContext.Customers.AddObject(customer);
                }
            }
    
            public void UpdateCustomer(Customer currentCustomer)
            {
                this.ObjectContext.Customers.AttachAsModified(currentCustomer,
                    this.ChangeSet.GetOriginal(currentCustomer));
            }
    
            public void DeleteCustomer(Customer customer)
            {
                if ((customer.EntityState != EntityState.Detached))
                {
                    this.ObjectContext.ObjectStateManager.
                        ChangeObjectState(customer, EntityState.Deleted);
                }
                else
                {
                    this.ObjectContext.Customers.Attach(customer);
                    this.ObjectContext.Customers.DeleteObject(customer);
                }
            }
        }
    }
    
  8. En la barra de menú, elija Compilación, Compilación NorthwindService.

  9. En la barra de menú, elija Archivo, Guardar Todos.

Cree una aplicación de LightSwitch

El último paso es crear una aplicación de LightSwitch que utiliza el servicio de WCF RIA que acaba de crear.

Para crear la aplicación

  1. En la barra de menú, elija Archivo, Nuevo, Proyecto.

  2. En el cuadro de diálogo nuevo proyecto, elija la categoría LightSwitch, y elija Aplicación de LightSwitch (Visual Basic) o la plantilla de proyecto Aplicación de LightSwitch (Visual C#).

  3. En el cuadro de texto Nombre, entre en Northwind, y elija el botón Aceptar.

  4. En la barra de menú, elija Archivo, Add, Proyecto existente.

  5. Elija el proyecto NorthwindService, y elija Abrir.

  6. En Explorador de soluciones, en el proyecto Northwind, abra el menú contextual para el nodo orígenes de datos y, a continuación Agregar origen de datos.

  7. En Asistente para adjuntar origen de datos, elija el icono Servicio RIA de WCF.

  8. Elija el botón siguiente, y elija el botón Agregar referencia.

  9. En el cuadro de diálogo Administrador de referencias, elija el botón examinar.

  10. En la carpeta Bin \Release para el proyecto de NorthWindService, elija el archivo NorthwindService.dll, y elija el botón Add.

  11. Elija el botón Aceptar para cerrar el cuadro de diálogo, y elija el botón siguiente.

  12. En la página Seleccionar objetos de origen de datos, active la casilla Entidades, y después elija el botón finalizar.

  13. En Explorador de soluciones, en el proyecto NorthwindService, abra el archivo App.Config.

  14. En la sección de ConnectionStrings, copie la cadena de conexión que comienza con <add name’”NorthwindEntities”.

  15. En Explorador de soluciones, elija el proyecto Northwind, y elija Vista de archivos de la lista de la barra de herramientas.

  16. Expanda el nodo servidor y, a continuación Web.config.

  17. En la sección de ConnectionStrings, pegue la cadena de conexión que copió.

    Ahora tiene un origen de datos totalmente operativa que pueda, insertar, actualizar y eliminar registros mediante procedimientos almacenados.

Pasos siguientes

Puede crear muestra y lógica empresarial de LightSwitch como de costumbre y rápida y fácilmente crea una aplicación que funciona utilizando procedimientos almacenados.

Vea también

Tareas

Cómo: Ejecutar un procedimiento almacenado en LightSwitch

Otros recursos

Datos: La información que hay detrás de la aplicación