Compartilhar via


Passo a passo: usando somente procedimentos armazenados (C#)

Este passo a passo fornece um cenário básico de LINQ to SQL de ponta a ponta para acessar dados executando somente procedimentos armazenados. Essa abordagem geralmente é usada pelos administradores de banco de dados para limitar como o armazenamento de dados é acessado.

Observação

Você também pode usar procedimentos armazenados em aplicativos LINQ to SQL para substituir o comportamento padrão, especialmente para Create, Updatee Delete processos. Para obter mais informações, consulte Personalizando operações de inserção, atualização e exclusão.

Para fins deste passo a passo, você usará dois métodos que foram mapeados para procedimentos armazenados no banco de dados de exemplo Northwind: CustOrdersDetail e CustOrderHist. O mapeamento ocorre quando você executa a ferramenta de linha de comando sqlMetal para gerar um arquivo C#. Para obter mais informações, consulte a seção Pré-requisitos mais adiante neste passo a passo.

Este passo a passo não depende do Designer Relacional de Objeto. Os desenvolvedores que usam o Visual Studio também podem usar o Designer O/R para implementar a funcionalidade de procedimento armazenado. Veja LINQ to SQL Tools no Visual Studio.

Observação

Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos de interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você tem e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Personalizando o IDE.

Este passo a passo foi escrito usando as Configurações de Desenvolvimento do Visual C#.

Pré-requisitos

Este passo a passo requer o seguinte:

  • Este passo a passo usa uma pasta dedicada ("c:\linqtest7") para armazenar arquivos. Crie esta pasta antes de começar o passo a passo.

  • O banco de dados de exemplo Northwind.

    Se você não tiver esse banco de dados em seu computador de desenvolvimento, poderá baixá-lo no site de download da Microsoft. Para obter instruções, consulte Baixar bancos de dados de exemplo. Depois de baixar o banco de dados, copie o arquivo northwnd.mdf para a pasta c:\linqtest7.

  • Um arquivo de código C# gerado a partir do banco de dados Northwind.

    Este passo a passo foi escrito usando a ferramenta SqlMetal com a seguinte linha de comando:

    sqlmetal /code:"c:\linqtest7\northwind.cs" /language:csharp "c:\linqtest7\northwnd.mdf" /sprocs /functions /pluralize

    Para obter mais informações, consulte SqlMetal.exe (Ferramenta de Geração de Código).

Visão geral

Este passo a passo consiste em seis tarefas principais:

  • Configurando a solução LINQ to SQL no Visual Studio.

  • Adicionando o assembly System.Data.Linq ao projeto.

  • Adicionando o arquivo de código do banco de dados ao projeto.

  • Criando uma conexão com o banco de dados.

  • Configurando a interface do usuário.

  • Executando e testando o aplicativo.

Criando uma solução LINQ to SQL

Nesta primeira tarefa, você cria uma solução do Visual Studio que contém as referências necessárias para criar e executar um projeto LINQ to SQL.

Para criar uma solução LINQ to SQL

  1. No menu Arquivo do Visual Studio, aponte para Novo e clique em Projeto.

  2. No painel Tipos de projeto na caixa de diálogo Novo Projeto , clique em Visual C#.

  3. No painel Modelos , clique em Aplicativo do Windows Forms.

  4. Na caixa Nome , digite SprocOnlyApp.

  5. Na caixa Localização , verifique onde você deseja armazenar os arquivos do projeto.

  6. Clique em OK.

    O Designer de Formulários do Windows é aberto.

Adicionando a referência do assembly do LINQ to SQL

O assembly LINQ to SQL não está incluído no modelo padrão de aplicação do Windows Forms. Você mesmo precisará adicionar o assembly, conforme explicado nas etapas a seguir:

Para adicionar o System.Data.Linq.dll

  1. No Gerenciador de Soluções, clique com o botão direito do mouse em Referências e clique em Adicionar Referência.

  2. Na caixa de diálogo Adicionar Referência , clique em .NET, clique no assembly System.Data.Linq e clique em OK.

    O assembly é adicionado ao projeto.

Adicionando o arquivo de código Northwind ao projeto

Esta etapa pressupõe que você tenha usado a ferramenta SqlMetal para gerar um arquivo de código do banco de dados de exemplo Northwind. Para obter mais informações, consulte a seção Pré-requisitos anteriormente neste passo a passo.

Para adicionar o arquivo de código northwind ao projeto

  1. No menu Project, clique em Adicionar Item Existente.

  2. Na caixa de diálogo Adicionar Item Existente , mova para c:\linqtest7\northwind.cs e clique em Adicionar.

    O arquivo northwind.cs é adicionado ao projeto.

Criando uma conexão de banco de dados

Nesta etapa, você define a conexão com o banco de dados de exemplo Northwind. Este passo a passo usa "c:\linqtest7\northwnd.mdf" como caminho.

Para estabelecer a conexão com o banco de dados

  1. No Gerenciador de Soluções, clique com o botão direito do mouse em Form1.cs e clique em Exibir Código.

  2. Digite o seguinte código na Form1 classe:

    Northwnd db = new Northwnd(@"c:\linqtest7\northwnd.mdf");
    

Configurando a interface do usuário

Nesta tarefa, você configura uma interface para que os usuários possam executar procedimentos armazenados para acessar dados no banco de dados. Nos aplicativos que você está desenvolvendo com este passo a passo, os usuários podem acessar dados no banco de dados apenas usando os procedimentos armazenados inseridos no aplicativo.

Para configurar a interface do usuário

  1. Retorne ao Designer de Formulários do Windows (Form1.cs[Design]).

  2. No menu Exibir , clique em Caixa de Ferramentas.

    A caixa de ferramentas é aberta.

    Observação

    Clique no pino do AutoHide para manter a caixa de ferramentas aberta enquanto você executa as etapas restantes nesta seção.

  3. Arraste dois botões, duas caixas de texto e dois rótulos da caixa de ferramentas para o Form1.

    Organize os controles como na ilustração que acompanha. Expanda Form1 para que os controles se ajustem facilmente.

  4. Clique com o botão direito do mouse em label1 e clique em Propriedades.

  5. Altere a propriedade Text de label1 para Insira o ID do Pedido:.

  6. Da mesma forma para label2, altere a propriedade Text de label2 para Enter CustomerID:.

  7. Da mesma forma, altere a propriedade Text para button1 para Detalhes do Pedido.

  8. Altere a propriedade Text de button2 para Histórico de Pedidos.

    Amplie os controles de botão para que todo o texto fique visível.

Para manipular cliques de botão

  1. Clique duas vezes em Detalhes do Pedido no Form1 para abrir o manipulador de eventos button1 no editor de código.

  2. Digite o seguinte código no button1 manipulador:

    // Declare a variable to hold the contents of
    // textBox1 as an argument for the stored
    // procedure.
    string param = textBox1.Text;
    
    // Declare a variable to hold the results
    // returned by the stored procedure.
    var custquery = db.CustOrdersDetail(Convert.ToInt32(param));
    
    // Execute the stored procedure and display the results.
    string msg = "";
    foreach (CustOrdersDetailResult custOrdersDetail in custquery)
    {
        msg = msg + custOrdersDetail.ProductName + "\n";
    }
    if (msg == "")
        msg = "No results.";
    MessageBox.Show(msg);
    
    // Clear the variables before continuing.
    param = "";
    textBox1.Text = "";
    
  3. Agora clique duas vezes no botão2 no Form1 para abrir o button2 manipulador

  4. Digite o seguinte código no button2 manipulador:

    // Comments in the code for button2 are the same
    // as for button1.
    string param = textBox2.Text;
    
    var custquery = db.CustOrderHist(param);
    
    string msg = "";
    foreach (CustOrderHistResult custOrdHist in custquery)
    {
        msg = msg + custOrdHist.ProductName + "\n";
    }
    MessageBox.Show(msg);
    
    param = "";
    textBox2.Text = "";
    

Testando o aplicativo

Agora é hora de testar seu aplicativo. Observe que o contato com o repositório de dados limita-se a qualquer ação que os dois procedimentos armazenados podem executar. Essas ações são para retornar os produtos incluídos para qualquer ID do pedido que você inserir, ou para retornar um histórico de produtos pedidos para qualquer ID do cliente inserido.

Para testar o aplicativo

  1. Pressione F5 para iniciar a depuração.

    Form1 aparecerá.

  2. Na caixa Inserir OrderID , digite 10249e clique em Detalhes do Pedido.

    Uma caixa de mensagem lista os produtos incluídos na ordem 10249.

    Clique em OK para fechar a caixa de mensagem.

  3. Na caixa Inserir CustomerID , digite ALFKIe clique em Histórico de Pedidos.

    Uma caixa de mensagem é exibida que lista o histórico de pedidos do cliente ALFKI.

    Clique em OK para fechar a caixa de mensagem.

  4. Na caixa Inserir OrderID , digite 123e clique em Detalhes do Pedido.

    Uma caixa de mensagem é exibida que exibe "Sem resultados".

    Clique em OK para fechar a caixa de mensagem.

  5. No menu Depurar , clique em Parar depuração.

    A sessão de depuração é fechada.

  6. Se terminar de experimentar, clique em Fechar Projeto no menu Arquivo e salve seu projeto quando for solicitado.

Próximas etapas

Você pode aprimorar esse projeto fazendo algumas alterações. Por exemplo, você pode listar os procedimentos armazenados disponíveis em uma caixa de listagem e fazer com que o usuário selecione quais procedimentos executar. Você também pode transmitir a saída dos relatórios para um arquivo de texto.

Consulte também