Compartilhar via


Atribuir procedimentos armazenados para executar atualizações, inserções e exclusões (Designer O/R)

Os procedimentos armazenados podem ser adicionados ao Designer O/R e executados como métodos típicos 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 em um banco de dados (por exemplo, ao chamar o método SubmitChanges).

Observação

Se o procedimento armazenado retornar valores que precisam ser enviados de volta ao cliente (por exemplo, valores calculados no procedimento armazenado), crie parâmetros de saída em seus procedimentos armazenados. Se você não puder usar parâmetros de saída, escreva uma implementação de método parcial em vez de depender de substituições geradas pelo Designer O/R. Os membros mapeados para os valores gerados por banco de dados precisam ser definidos com valores adequados após a conclusão bem-sucedida de operações INSERT ou UPDATE. Para obter mais informações, consulte as responsabilidades do desenvolvedor na substituição do comportamento padrão.

Observação

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

Configurar 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 feitas nos dados nas classes de entidade LINQ para SQL é fornecida pelo runtime do LINQ to SQL. O runtime cria os comandos padrão INSERT, UPDATE e DELETE baseados 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 em sua tabela. Você também pode fazer isso quando o comportamento padrão não é gerado, por exemplo, quando as classes de entidade mapeiam para as exibições. Por fim, você pode substituir o comportamento de atualização padrão quando o banco de dados requer acesso à tabela por meio de procedimentos armazenados.

Observação

As instruções neste artigo ilustram a versão mais recente da IDE (experiência de desenvolvimento interativo) disponível no Visual Studio. Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos da interface do usuário. Você pode estar usando uma versão diferente do Visual Studio ou configurações de ambiente diferentes. Para obter mais informações, consulte Personalizar o IDE.

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 .dbml arquivo no Gerenciador de Soluções.)

  2. No Gerenciador de Servidores ou No Gerenciador de Banco de Dados, expanda procedimentos armazenados e localize os procedimentos armazenados que você deseja usar para os comandos Inserir, Atualizar e/ou Excluir da classe de entidade.

  3. Arraste o procedimento armazenado para o Designer O/R.

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

  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 (Inserir, Atualizar ou Excluir).

  6. Clique nas reticências (...) ao lado das palavras Usar Runtime 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 propriedades de classe para verificar se os argumentos do método são mapeados para as propriedades de classe apropriadas. Mapeie os argumentos do método original (Original_<ArgumentName>) para as propriedades originais (<PropertyName> (Original)) para os comandos Update e Delete.

    Observação

    Por padrão, os argumentos do método são mapeados para propriedades de classe quando os nomes correspondem. Se os nomes de propriedade alterados não corresponderem mais entre a tabela e a classe de entidade, talvez seja necessário selecionar a propriedade de classe equivalente para a qual mapear se o designer não puder determinar o mapeamento correto.

  10. Clique em OK ou em Aplicar.

    Observação

    Você pode continuar a configurar o comportamento de cada classe e combinação de comportamento, desde que clique em Aplicar depois de fazer cada alteração. Se você alterar a classe ou o comportamento antes de clicar em Aplicar, uma caixa de diálogo de aviso será exibida e fornecerá uma oportunidade para aplicar suas alterações.

Para reverter para usar a lógica de runtime padrão para atualizações, clique nas reticências ao lado do comando Inserir, Atualizar ou Excluir na janela Propriedades e selecione Usar runtime na caixa de diálogo Configurar Comportamento .