Passo a passo: usando procedimentos armazenados
Você não pode chamar um procedimento armazenado em um banco de dados do SQL Server diretamente do LightSwitch, mas pode criar uma tabela local no seu aplicativo LightSwitch que contém os parâmetros para o procedimento armazenado e, em seguida, chamar o procedimento armazenado em um evento de camada de servidor. Este passo a passo mostra como inserir registros de cliente em um banco de dados SQL usando procedimentos armazenados.
Muitos administradores de banco de dados não permitem acesso direto às tabelas. Em vez disso, expõem exibições somente leitura e fornecem procedimentos armazenados para inserir, atualizar e excluir registros. Como o LightSwitch não reconhece procedimentos armazenados, qualquer banco de dados que confie em procedimentos armazenados para atualizar registros pode ser aparentemente inutilizável no início. Se fizer um pouco de trabalho adicional, você certamente poderá usar esses bancos de dados do LightSwitch.
Pré-requisitos
Esta explicação passo a passo usa o banco de dados de exemplo Northwind.
Criar um procedimento armazenado
Na maioria dos casos, você irá acessar procedimentos armazenados já existentes em um banco de dados. Como o banco de dados Northwind não tem os procedimentos armazenados necessários para inserir registros de cliente, portanto, você deve adicioná-los.
Para adicionar um procedimento armazenado
Na barra de menus, escolha Exibir, Pesquisador de Objetos do SQL Server.
Na janela Pesquisador de Objetos do SQL Server, expanda o nó do banco de dados NORTHWIND e escolha Programação.
Expanda o nó Programação e escolha Procedimentos Armazenados.
Abra o menu de atalho de Procedimentos Armazenados e escolha Adicionar Novo Procedimento Armazenado.
No Editor de Códigos, substitua o conteúdo pelo seguinte código Transact-SQL e escolha o botão 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)
Na caixa de diálogo Visualizar Atualizações de Banco de Dados, escolha o botão Atualizar Banco de Dados.
O procedimento armazenado InsertCustomer é adicionado ao banco de dados.
Criar um aplicativo do LightSwitch
Nesta etapa, você criará um aplicativo para chamar o procedimento armazenado e adicionar novos clientes ao banco de dados Northwind.
Para criar o aplicativo
Na barra de menus, escolha Arquivo, Novo, Projeto.
Na caixa de diálogo Novo Projeto, expanda o nó Visual Basic ou Visual C# e escolha o modelo Aplicativo HTML do LightSwitch.
Na caixa de texto Nome, insira NorthwindSP e, em seguida, selecione o botão OK.
Para adicionar uma fonte de dados
No Gerenciador de Soluções, abra o menu de atalho para o nó Fontes de Dados e escolha Adicionar Fonte de Dados.
Em Anexar Assistente de Fonte de Dados, escolha Banco de Dados e o selecione o botão Próximo.
Na caixa de diálogo Propriedades da Conexão, insira os detalhes de conexão para seu banco de dados Northwind e selecione o botão OK.
Na página Escolher objetos do banco de dados, expanda o nó Tabelas, marque a caixa de seleção Clientes e selecione o botão Concluir.
Para adicionar uma tabela local
No Gerenciador de Soluções, abra o menu de atalho para o nó Fontes de Dados e escolha Adicionar Tabela.
Na janela Propriedades, escolha a propriedade Nome e insira NewCustomer.
No designer de entidade, adicione os seguintes campos:
Nome
Tipo
Obrigatório
CustomerID
Cadeia de caracteres
Sim
CompanyName
Cadeia de caracteres
Sim
ContactName
Cadeia de caracteres
Sim
ContactTitle
Cadeia de caracteres
Sim
Endereço
Cadeia de caracteres
Sim
Cidade
Cadeia de caracteres
Sim
Região
Cadeia de caracteres
Sim
CEP
Cadeia de caracteres
Sim
País
Cadeia de caracteres
Sim
Telefone
Número de telefone
Sim
Fax
Número de telefone
Sim
Observe que todos os campos são necessários. Isso ocorre porque todos os parâmetros para o procedimento armazenado requerem valores. Observe também que o tipo de dados para os campos Telefone e Fax são Phone Number. Mesmo que eles sejam armazenados no banco de dados como nvarchar, você pode tirar proveito dos tipos de negócios personalizados do LightSwitch na camada do cliente.
Para adicionar uma tela
No Entity Designer, na barra Perspectiva, escolha HTMLClient.
Na Barra de Ferramentas, clique no botão Tela.
Na caixa de diálogo Adicionar Nova Tela, escolha o modelo Conjunto de Telas Comuns, na caixa de texto Nome do Conjunto de Telas digite Clientes e na lista Data de Tela, escolha NewCustomer, em seguida, clique no botão OK.
Para chamar o procedimento armazenado
No Gerenciador de Soluções, abra o menu de atalho para o nó NorthwindSP.Server e escolha Adicionar, Referência.
Na caixa de diálogo Adicionar Referência, marque a caixa de seleção System.Configuration e, em seguida, selecione o botão OK.
No Gerenciador de Soluções, abra o menu de atalho para o nó NewCustomer.lsml e escolha Abrir.
No Entity Designer, na barra Perspectiva, escolha Servidor.
Na Barra de Ferramentas, expanda a lista Escrever Código e escolha NewCustomers_Inserting.
No Editor de Códigos, substitua o código existente pelo seguinte:
Imports System.Configuration Imports System.Data Imports System.Data.SqlClient Namespace LightSwitchApplication Public Class ApplicationDataService Private Sub NewCustomers_Inserting(entity As NewCustomer) Using connection = New SqlConnection Dim connectionStringName = Me.DataWorkspace.NorthwindData.Details.Name connection.ConnectionString = ConfigurationManager.ConnectionStrings(connectionStringName).ConnectionString Dim procedure = "dbo.InsertCustomer" Using command = New SqlCommand(procedure, connection) command.CommandType = CommandType.StoredProcedure command.Parameters.Add( New SqlParameter("@CustomerID", entity.CustomerID)) command.Parameters.Add( New SqlParameter("@CompanyName", entity.CompanyName)) command.Parameters.Add( New SqlParameter("@ContactName", entity.ContactName)) command.Parameters.Add( New SqlParameter("@ContactTitle", entity.ContactTitle)) command.Parameters.Add( New SqlParameter("@Address", entity.Address)) command.Parameters.Add( New SqlParameter("@City", entity.City)) command.Parameters.Add( New SqlParameter("@Region", entity.Region)) command.Parameters.Add( New SqlParameter("@PostalCode", entity.PostalCode)) command.Parameters.Add( New SqlParameter("@Country", entity.Country)) command.Parameters.Add( New SqlParameter("@Phone", entity.Phone)) command.Parameters.Add( New SqlParameter("@Fax", entity.Fax)) connection.Open() command.ExecuteNonQuery() End Using End Using End Sub End Class End Namespace
using Microsoft.VisualBasic; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Diagnostics; using System.Configuration; using System.Data.SqlClient; namespace LightSwitchApplication { public class ApplicationDataService { private void NewCustomers_Inserting(NewCustomer entity) { using (connection == new SqlConnection()) { dynamic connectionStringName = this.DataWorkspace.NorthwindData.Details.Name; connection.ConnectionString = ConfigurationManager.ConnectionStrings(connectionStringName).ConnectionString; dynamic procedure = "dbo.InsertCustomer"; using (command == new SqlCommand(procedure, connection)) { command.CommandType = CommandType.StoredProcedure; command.Parameters.Add(new SqlParameter("@CustomerID", entity.CustomerID)); command.Parameters.Add(new SqlParameter("@CompanyName", entity.CompanyName)); command.Parameters.Add(new SqlParameter("@ContactName", entity.ContactName)); command.Parameters.Add(new SqlParameter("@ContactTitle", entity.ContactTitle)); command.Parameters.Add(new SqlParameter("@Address", entity.Address)); command.Parameters.Add(new SqlParameter("@City", entity.City)); command.Parameters.Add(new SqlParameter("@Region", entity.Region)); command.Parameters.Add(new SqlParameter("@PostalCode", entity.PostalCode)); command.Parameters.Add(new SqlParameter("@Country", entity.Country)); command.Parameters.Add(new SqlParameter("@Phone", entity.Phone)); command.Parameters.Add(new SqlParameter("@Fax", entity.Fax)); connection.Open(); command.ExecuteNonQuery(); } } } } }
Quando um novo registro é inserido na tabela NewCustomers, esse código é executado, abrindo uma conexão com o banco de dados Northwind e executando os procedimentos armazenados de InsertCustomer, fornecendo os valores na entidade NewCustomer como parâmetros para o procedimento armazenado.
Para testar o aplicativo
No Editor de Código, defina um ponto de interrupção no método NewCustomers_Inserting.
Execute o aplicativo e na tela CustomersSet, selecione o botão Adicionar.
Na tela Clientes, preencha todos os campos e selecione o botão Salvar.
Observe que o ponto de interrupção é atingido, demonstrando que o código está funcionando e pressione F5 para continuar. Se você abrir a tabela Clientes no banco de dados Northwind, você verá o novo registro de cliente.
Próximas etapas
Você pode criar as telas do LightSwitch e a lógica de negócio como de costume, além de criar com rapidez e facilidade um aplicativo funcional usando procedimentos armazenados.
Consulte também
Tarefas
Como executar um procedimento armazenado no LightSwitch