Compartilhar via


Como atribuir procedimentos armazenados para executar atualizações, inserções e exclusões (Designer Relacional de Objetos)

Os procedimentos armazenados podem ser adicionados ao Designer Relacional de Objetos e executados como métodos típicos do DataContext. Eles também podem ser usados para substituir o comportamento padrão em tempo de execução do LINQ to SQL que executa inserções, atualizações e exclusões quando alterações são salvas de classes de entidade para um banco de dados (por exemplo, ao chamar o método SubmitChanges).

Dica

Se seu procedimento armazenado retornar valores que precisem ser reenviados ao cliente (por exemplo, valores calculados no procedimento armazenado), crie parâmetros de saída em seus procedimentos armazenados.Se você não pode usar parâmetros de saída, escreva uma implementação de método parcial em vez de depender das substituições geradas pelo Designer Relacional de Objetos.Os membros mapeados para os valores gerados por banco de dados precisam ser definidos para valores apropriados após a conclusão com êxito de operações INSERT ou UPDATE.Para obter mais informações, consulte Responsabilidades do desenvolvedor em substituir o comportamento padrão.

Dica

O LINQ to SQL manipula automaticamente os valores gerados por banco de dados para colunas de identidade (incremento automático), rowguidcol (GUID gerado por banco de dados) e carimbo de data/hora.Os valores gerados pelo banco de dados em outros tipos de coluna resultarão inesperadamente em um valor nulo.Para retornar os valores gerados por banco de dados, defina manualmente IsDbGenerated como true e AutoSync como um dos seguintes: Always, OnInsert ou OnUpdate.

Configurando o comportamento de atualização de uma classe de entidade

Por padrão, a lógica para atualizar um banco de dados (inserções, atualizações e exclusões), com alterações que foram feitas nos dados em classes de entidade LINQ to SQL, é fornecida em tempo de execução pelo LINQ to SQL. O tempo de execução cria comandos padrão Insert, Update e Delete que se baseiam no esquema da tabela (as informações de coluna e chave primária). Quando o comportamento padrão não é desejado, você pode configurar o comportamento de atualização atribuindo procedimentos armazenados específicos para executar as inserções, atualizações e exclusões necessárias para manipular os dados na sua tabela. Você também pode fazer isso quando o comportamento padrão não é gerado, por exemplo, quando as classes de entidade são mapeadas para exibições. Finalmente, você pode substituir o comportamento de atualização padrão quando o banco de dados exige o acesso à tabela através de procedimentos armazenados.

Dica

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

Para atribuir procedimentos armazenados para substituir o comportamento padrão de uma classe de entidade

  1. Abra o arquivo LINQ to SQL no designer. (Clique duas vezes no arquivo .dbml no Gerenciador de Soluções.)

  2. Em Gerenciador de Servidores/Gerenciador de Banco de Dados, expanda Procedimentos Armazenados e localize os procedimentos armazenados a serem usados com os comandos Insert, Update e/ou Delete da classe de entidade.

  3. Arraste o procedimento armazenado para o Designer Relacional de Objetos.

    O procedimento armazenado é adicionado ao painel de métodos como um método DataContext. Para obter mais informações, consulte Métodos de DataContext (Designer de Objeto Relacional).

  4. Selecione a classe de entidade para a qual você deseja usar o procedimento armazenado para executar atualizações.

  5. Na janela Propriedades, selecione o comando a ser substituído (Insert, Update ou Delete).

  6. Clique nas reticências (...) ao lado das palavras Usar tempo de execução para abrir a caixa de diálogo Configurar Comportamento.

  7. Selecione Personalizar.

  8. Selecione o procedimento armazenado desejado na lista Personalizar.

  9. Inspecione a lista de Argumentos de Método e de Propriedades de Classe para verificar se Argumentos de Método é mapeado para Propriedades de Classe apropriado. Mapeie os argumentos de método originais (original _ArgumentName) para as propriedades originais (PropertyName (Original)) para os comandos Update e Delete.

    Dica

    Por padrão, os argumentos do método são mapeados para as propriedades de classe quando os nomes coincidem.Se os nomes de propriedade forem modificados, não haverá mais correspondência entre a tabela e a classe de entidade. Talvez seja necessário selecionar a propriedade de classe equivalente para mapeamento se o designer não puder determinar o mapeamento correto.

  10. Clique em OK ou em Aplicar.

    Dica

    Você pode continuar a configurar o comportamento para cada combinação de classe/comportamento quando você clica em Aplicar depois de cada alteração.Se você alterar a classe ou o comportamento antes de clicar em Aplicar, uma caixa de diálogo de aviso com uma oportunidade de aplicar as alterações será exibida.

    Para voltar a usar a lógica padrão em tempo de execução para atualizações, clique nas reticências ao lado do comando Insert, Update ou Delete, na janela Propriedades, e selecione Usar tempo de execução na caixa de diálogo Configurar Comportamento.

Consulte também

Tarefas

Passo a passo: criando classes LINQ to SQL (Designer Relacional de Objetos)

Instruções passo a passo: criando procedimentos armazenados atualizados para a tabela Clientes do Northwind

Conceitos

Métodos de DataContext (Designer de Objeto Relacional)

Operações de inserção, atualização e exclusão

Outros recursos

Designer Relacional de Objetos

LINQ to SQL [wd_LINQSQL]