Compartilhar via


Instruções passo a passo: atualizando relatórios com procedimentos armazenados

Você não pode chamar um procedimento armazenado em um banco de dados SQL Server diretamente de LightSwitch, mas você pode criar um serviço rico de (RIA) de aplicativo Windows Communication Foundation (WCF) Internet para expor procedimentos armazenados e acessar o serviço do aplicativo de LightSwitch .Essa explicação passo a passo mostra como atualizar, inserir, e excluir registros de cliente em um aplicativo de LightSwitch usando procedimentos armazenados e um serviço WCF RIA.

Vários administradores de banco de dados não permitem acesso direto a tabelas, em vez disso expõe modos de exibição somente leitura e fornecendo procedimentos armazenados para atualizar, inserir, e para excluir registros.LightSwitch não reconhece procedimentos armazenados, então nenhum banco de dados que confiar em procedimentos armazenados para atualizar registros no início pode parecer ser inutilizável.Se você fizer em vez do trabalho adicional, você certamente pode usar esses bancos de dados de LightSwitch.

Pré-requisitos

Essa explicação passo a passo usa o banco de dados Northwind do tutorial de LightSwitch Tour guiado .Para obter mais informações, consulte Instalando o banco de dados de exemplo Northwind.

Create procedimentos armazenados

Na maioria dos casos, você irá acessar os procedimentos armazenados que já existem em um banco de dados.O banco de dados Northwind não tem os procedimentos armazenados necessários para atualizar, inserir, e excluir registros de clientes, portanto você deve adicioná-los.

Para adicionar procedimentos armazenados

  1. Na barra de menu, escolha Modo de Visualização, Pesquisador de Objetos do SQL Server.

  2. Na janela de Pesquisador de Objetos do SQL Server , expanda o nó de banco de dados de NORTHWIND , e então escolha Programação.

  3. Expanda o nó de Programação , e então escolha Procedimentos armazenados.

  4. Abra o menu de atalho para Procedimentos armazenados, e então escolha Adicionar Novo Procedimento Armazenado.

  5. Em Editor de Códigos, substitua o seu conteúdo pelo seguinte código transact-sql, e então escolha o botão de Atualizar .

    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. Na caixa de diálogo Visualizar atualizações do banco de dados , escolha o botão de Atualizar banco de dados .

    O procedimento armazenado InsertCustomer é adicionado ao banco de dados.

  7. Abra o menu de atalho para Procedimentos armazenados, e então escolha Adicionar Novo Procedimento Armazenado.

  8. Em Editor de Códigos, substitua o seu conteúdo pelo seguinte código transact-sql, e então escolha o botão de Atualizar .

    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. Na caixa de diálogo Visualizar atualizações do banco de dados , escolha o botão de Atualizar banco de dados .

    O procedimento armazenado UpdateCustomer é adicionado ao banco de dados.

  10. Abra o menu de atalho para Procedimentos armazenados, e então escolha Adicionar Novo Procedimento Armazenado.

  11. Em Editor de Códigos, substitua o seu conteúdo pelo seguinte código transact-sql, e então escolha o botão de Atualizar .

    CREATE PROCEDURE [dbo].[DeleteCustomer]
        @CustomerID nchar(5)
    AS
    
    DELETE FROM [dbo].[Customers]
     WHERE CustomerID=@CustomerID
    
  12. Na caixa de diálogo Visualizar atualizações do banco de dados , escolha o botão de Atualizar banco de dados .

    O procedimento armazenado DeleteCustomer é adicionado ao banco de dados.

Crie um modelo de dados de entidade

A próxima etapa é criar um modelo de dados de Framework de entidade que, para atualizar, inserir e excluir registros usando os procedimentos armazenados que você acabou de adicionar.

Para criar um modelo de dados

  1. Na barra de menu, escolha Arquivo, Novo, Projeto.

  2. Na caixa de diálogo de Novo Projeto , expanda Visual Basic ou o nó de Visual C# , e então escolha o modelo de Biblioteca de Classes .

  3. Na caixa de texto de Nome , entre em NorthwindService, e então escolha o botão de OK .

  4. Em Gerenciador de Soluções, abra o menu de atalho para o nó de MyProject , e então escolha Abrir.

  5. Na lista de Estrutura de Destino , escolha o .NET Framework 4.

  6. Em Gerenciador de Soluções, abra o menu de atalho para NorthwindServiceAdicionar, escolha, e escolha Novo Item.

  7. Na caixa de diálogo de Adicionar novo item , escolha o modelo de Modelo de Dados de Entidade ADO.NET .

  8. Na caixa de texto de Nome , entre em Northwind.edmx, e então escolha o botão de Adicionar .

  9. Em Assistente de modelo de dados de entidade, escolha o ícone de Gere de banco de dados , e depois escolha o botão de Avançar .

  10. Na página de Escolha a Conexão de Dados , escolha o botão de Nova Conexão .

  11. Na caixa de diálogo de Propriedades da Conexão , na caixa de texto de Nome do Servidor , digite o nome do servidor onde o banco de dados Northwind está instalado.

    Anotação de J#Anotação de J#

    Você pode localizar o nome em Pesquisador de Objetos do SQL Server.

  12. Na caixa de texto de Selecionar ou digitar um nome de banco de dados , entre em O Northwind.

  13. Escolha o botão de OK , e então escolha o botão de Avançar .

  14. Na página de Escolha os objetos de banco de dados e configurações , expanda o nó de Tabelas , selecione a caixa de seleção de Clientes .

  15. Expanda o nó de Procedimentos armazenados e funções , marque as caixas de seleção de DeleteCustomer, de InsertCustomer, e de UpdateCustomer , e então escolha o botão de Concluir .

    O modelo de entidade é gerado, e o diagrama de banco de dados de Northwind.edmx aparece.

    ObservaçãoObservação

    Se uma caixa de diálogo aparece Alerta de Segurança , escolha o botão de OK para executar o modelo.

  16. Abra o menu de atalho para a entidade de Cliente , e então escolha Mapear de procedimento armazenado.

  17. Na janela de Detalhes de mapeamento , <Select Insert Function> na lista, escolha InsertCustomer.

  18. <Select Update Function> Na lista, escolha UpdateCustomer.

  19. <Select Delete Function> Na lista, escolha DeleteCustomer.

  20. Feche o designer de Northwind.edmx .

  21. Em Gerenciador de Soluções, escolha o botão da barra de ferramentas de Mostrar todos os arquivos .

  22. Expanda o nó para Northwind.edmx, e excluir os arquivos de Northwind.tt e de Northwind.Context.tt .

  23. Abra o arquivo de Northwind.edmx , e realçar o espaço em branco fora de entidade de Cliente .

  24. Na janela de Propriedades , altere o valor da propriedade de Estratégia de geração de código a Padrão.

  25. Na barra de menu, escolha Compilar, Compilação NorthwindService.

    Agora você tem um modelo de dados de Framework de entidade que, atualizar, inserir e excluir registros usando seus procedimentos armazenados.

Crie um serviço WCF RIA

Se você criar um serviço WCF RIA, seu aplicativo de LightSwitch pode consumir o modelo de dados de Framework de entidade como uma fonte de dados.

Para criar um serviço

  1. Em Gerenciador de Soluções, abra o menu de atalho para o projeto de NorthwindService , escolha Adicionar, escolha Novo Item.

  2. Na caixa de diálogo Adicionar novo item , escolha o modelo de Classe de serviço de domínio .

  3. Na caixa de texto Nome , entre em NorthwindService, escolha o botão de Adicionar .

  4. Na caixa de diálogo Adicione a nova classe de serviço de domínio , escolha o botão de OK .

  5. Em Gerenciador de Soluções, abra o menu de atalho para Serviço do Northwind, escolha Adicionar Referência.

  6. Escolha o nó de Extensões , selecione a caixa de seleção System.ServiceModel.DomainServices.EntityFramework , escolha o botão de OK .

  7. Adicione o seguinte código à classe de 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. Na barra de menu, escolha Compilar, Compilação NorthwindService.

  9. Na barra de menu, escolha Arquivo, Salvar Tudo.

Crie um aplicativo de LightSwitch

A etapa final é criar um aplicativo de LightSwitch que consome o serviço WCF RIA que você crie apenas.

Para criar o aplicativo

  1. Na barra de menu, escolha Arquivo, Novo, Projeto.

  2. Na caixa de diálogo Novo Projeto , escolha a categoria de LightSwitch , escolha Aplicativo LightSwitch (Visual Basic) ou o modelo de projeto de Aplicativo LightSwitch (Visual C#) .

  3. Na caixa de texto Nome , entre em Northwind, escolha o botão de OK .

  4. Na barra de menus, escolha Arquivo, Adicionar, Projeto Existente.

  5. Escolha o projeto de NorthwindService , escolha Abrir.

  6. Em Gerenciador de Soluções, no projeto de Northwind , abra o menu de atalho para o nó de Fontes de Dados , e escolha Adicionar fonte de dados.

  7. Em Anexar o assistente da fonte de dados, escolha o ícone de Serviço WCF RIA .

  8. Escolha o botão de Avançar , escolha o botão de Adicionar Referência .

  9. Na caixa de diálogo Referenciar o gerenciador , escolha o botão de Procurar .

  10. Na pasta bin \ release para seu projeto de NorthWindService, escolha o arquivo de NorthwindService.dll , escolha o botão de Adicionar .

  11. Escolha o botão de OK para fechar a caixa de diálogo, escolha o botão de Avançar .

  12. Na página de Selecione objetos da fonte de dados , selecione a caixa de seleção Entidades , escolha o botão de Concluir .

  13. Em Gerenciador de Soluções, no projeto de NorthwindService , abra o arquivo App.Config .

  14. Na seção de ConnectionStrings , copie a cadeia de conexão que começa com <add name’”NorthwindEntities”.

  15. Em Gerenciador de Soluções, escolha o projeto de Northwind , escolha O modo de Arquivo de lista na barra de ferramentas.

  16. Expanda o nó de Servidor , escolha Web.config.

  17. Na seção ConnectionStrings, cole a cadeia de conexão que você copiou.

    Agora você tem uma fonte de dados totalmente de trabalho que pode inserir, atualizar, e excluir registros usando procedimentos armazenados.

Próximas etapas

Você pode criar suas telas e lógica de negócios de LightSwitch como de costume e rapidamente e facilmente fazer um aplicativo de trabalho usando procedimentos armazenados.

Consulte também

Tarefas

Como executar um procedimento armazenado no LightSwitch

Outros recursos

Dados: Informações por trás de seu aplicativo.