Como: atualização, Inserir e excluir dados com o controle LinqDataSource

Com o controle LinqDataSource, você pode criar páginas da Web que permitem aos usuários atualizar, inserir e excluir dados.Você não precisará especificar comandos SQL, porque o controle LinqDataSource usa comandos criados dinamicamente para essas operações.Para permitir que os usuários modifiquem dados, você pode ativar a atualização, inserção ou operações de exclusão no controle LinqDataSource.Você pode, em seguida, conectar-se o controle aocontrole associado a dados que permite aos usuários atualizar dados, como o DetailsView ou GridView.Se você desejar personalizar os valores a serem atualizados, você pode adicionar parâmetros ou criar um manipulador de eventos e alterar valores dinamicamente.

Este tópico descreve como usar o controle LinqDataSource para automaticamente ativar atualização, inserção e as operações de exclusão.Ele também descreve como personalizar os valores que estão sendo atualizados.Finalmente, o tópico mostra como criar um manipulador de eventos para definir uma propriedade antes de inserir ou atualizar um registro de banco de dados por meio de programação.

As etapas para ativação automática das operações de atualização, exclusão e inserção são semelhantes a qualquer outra, e os procedimentos neste tópico mostram como habilitar todas as três funções.No entanto, você não precisará ativar todos os três.Você pode ativar somente as funções que você precisa.

Se você não estiver familiarizado com o controle LinqDataSource, consulte Visão geral sobre o controle de servidor Web LinqDataSource e Passo-a-passo: recuperação, atualização, inserção e exclusão de dados com o LinqDataSource e controles DetailsView.

Atualizando automaticamente, inserindo e excluindo dados

Para habilitar o controle LinqDataSourcepara tratar automaticamente de atualizações de dados, as configurações a seguir são necessárias:

Para ativar a atualização, inserção e exclusão de dados

  1. Para adicionar um controle LinqDataSource a uma página da Web ASP.NET

  2. Defina a propriedade ContextTypeName como o nome de um objeto que é derivada da classe DataContext.

    Quando você usa o Object Relational Designero no Visual Studio 2008 para criar uma classe que representa um tabela de banco de dados SQL, a classe gerada automaticamente é derivada de DataContext.

  3. Defina a TableName com o nome de classe de entidade que representa o tabela de banco de dados associado.

  4. No controle EnableUpdate, defina as propriedades EnableDelete, EnableInsert e LinqDataSource para true.

  5. Adicione um controle de dados vinculados, como um controle DetailsView e defina sua propriedade DataSourceID como a identificação do controle LinqDataSource.

  6. Defina a propriedade DataKeyNames do controle de dados com o nome de chave primária de coluna ou colunas da tabela.

  7. Fornece uma maneira no controle associado a dados para o usuário alternar entre o modo atualizar, excluir ou edição.

    Por exemplo, você pode adicionar botões para a data-bound control ou ativar o controle criar esses botões automaticamente.

    O exemplo a seguir mostra o marcação declarativa para parte de uma página da Web do ASP.NET que contém um controle LinqDataSource e um controle DetailsView.Os controles estão configurados para permitir que o usuário exiba, atualize, insira e exclua dados em uma tabela chamada Produtos.

    <asp:LinqDataSource
      ContextTypeName="ExampleDataContext"
      TableName="Products"
      EnableUpdate="true"
      EnableInsert="true"
      EnableDelete="true"
      ID="LinqDataSource1"
      >
    </asp:LinqDataSource>
    <asp:DetailsView
      DataSourceID="LinqDataSource1"
      DataKeyNames="ProductID"
      AutoGenerateEditButton="true"
      AutoGenerateDeleteButton="true"
      AutoGenerateInsertButton="true"
      AllowPaging="true"
      ID="DetailsView1"
      >
    </asp:DetailsView>
    

Adicionar parâmetros para atualizar, inserir ou excluir dados

Por padrão, não é necessário adicionar parâmetros para atualizar, inserir ou excluir dados.Um controle associado a dados passa seus valores para o controle LinqDataSource e o controle LinqDataSource usa os valores para definir a propriedade correspondente.LINQ to SQL cria os comandos para modificar a fonte de dados.Para obter mais informações, consulte LINQ to SQL.

Você pode especificar parâmetros de operações de atualização, inserção, ou exclusão.Para isso quando você deseja ou para definir se uma sequência vazia valores são convertidos para null Fornecer um valor padrão.Não é necessário especificar um parâmetro para cada valor que está sendo atualizado ou inserido, apenas para os valores a personalizar.Quaisquer valores que não são definidos por um parâmetro são tratados automaticamente pelo controle LinqDataSource.

The LinqDataSource controle contém as seguintes coleções de parâmetros de gerenciamento: UpdateParameters, InsertParameters, e DeleteParameters.

Para adicionar parâmetros para atualizar, inserir e excluir dados

  • Adicione uma definição de parâmetro para cada valor que você deseja modificar.

    O exemplo a seguir mostra como adicionar um parâmetro de uma propriedade chamada Category.O parâmetro é adicionado a coleções UpdateParameters e InsertParameters.

    <asp:LinqDataSource
      ContextTypeName="ExampleDataContext"
      TableName="Products"
      EnableUpdate="true"
      EnableInsert="true"
      EnableDelete="true"
      ID="LinqDataSource1"
      >
      <UpdateParameters>
        <asp:Parameter Name="Category" DefaultValue="Miscellaneous" />
      </UpdateParameters>
      <InsertParameters>
        <asp:Parameter Name="Category" DefaultValue="Miscellaneous" />
      </InsertParameters>
    </asp:LinqDataSource>
    

    Quando o usuário não fornece um valor para a propriedade Category, o valor padrão é salvo no banco de dados.

Definindo valores programaticamente

Para definir propriedades por programação antes que uma operação de dados seja efetuada, você pode criar manipuladores de eventos para os eventos Inserting, Updating e Deleting do controle LinqDataSource.Quaisquer propriedades que você não defina no manipulador de eventos são definidas automaticamente pelo controle LinqDataSource.

Para definir valores de forma programática

  1. Criar um manipulador de eventos para o evento Inserting, Updating, ou Deleting do controle LinqDataSource.

  2. Adicione código para o manipulador de eventos por meio de programação que define o valor que você deseja modificar.

    Os dados para atualizar, inserir, ou excluir estão nas seguintes propriedades:

    Evento

    Propriedade

    Classe

    Inserting

    NewObject

    LinqDataSourceInsertEventArgs

    Updating

    NewObject

    OriginalObject

    LinqDataSourceUpdateEventArgs

    Deleting

    OriginalObject

    LinqDataSourceDeleteEventArgs

    Todas essas propriedades retornam um objeto do tipo Object.Você pode converter os objetos retornados dessas propriedades para o tipo de classe de entidade que representa os dados.Depois de converter, você pode definir as propriedades para esse tipo.

    O exemplo a seguir mostra um manipulador de eventos para o evento Inserting que define uma coluna DateModified com a data e hora atuais.Ele converte o objeto na propriedade NewObject para o tipo Product.

    Protected Sub LinqDataSource_Inserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.LinqDataSourceInsertEventArgs)
        Dim product As Product
        product = CType(e.NewObject, Product)
        product.DateModified = DateTime.Now
    End Sub
    
    protected void LinqDataSource_Inserting(object sender, LinqDataSourceInsertEventArgs e)
    {
        Product product = (Product)e.NewObject;
        product.DateModified = DateTime.Now;
    }
    

    O exemplo a seguir mostra a marcação declarativa para um controle LinqDataSource que vincula o método LinqDataSource_Inserting para o evento Inserting.

    <asp:LinqDataSource
      ContextTypeName="ExampleDataContext"
      TableName="Products"
      OnInserting="LinqDataSource_Inserting"
      EnableUpdate="true"
      EnableInsert="true"
      EnableDelete="true"
      ID="LinqDataSource1"
      >
    </asp:LinqDataSource>
    

Compilando o código

Para atualizar, inserir ou excluir dados usando o controle LinqDataSource, você deve criar uma classe de entidade que representa uma tabela de banco de dados.Você pode criar uma classe de entidade usando o Object Relationship Designer no Visual Studio 2008.

Segurança

Este exemplo contém um caixa de texto que aceita entradas do usuário, o que é uma ameaça potencial de segurança.Por padrão, páginas Web ASP.NET validam se as entradas de usuário não incluem scripts ou elementos HTML.Para obter mais informações, consulte Visão Geral de Scripts Maliciosos.

Para obter informações sobre como armazenar uma sequência de conexão, consulte Como: Proteger seqüências de conexão quando usando controles de fontes de dados.

Para obter informações sobre como não exibir informações sigilosas em mensagens de erro, consulte Como: Exibição Safe erro Messages.

Consulte também

Conceitos

Visão geral sobre o controle de servidor Web LinqDataSource

Referência

Parameter