Partager via


Comment mettre à jour, insérer et supprimer des données avec le contrôle LinqDataSource

Mise à jour : novembre 2007

Avec le contrôle LinqDataSource, vous pouvez créer des pages Web qui permettent aux utilisateurs de mettre à jour, insérer et supprimer des données. Vous n'avez pas à spécifier de commandes SQL parce que le contrôle LinqDataSource utilise des commandes créées dynamiquement pour ces opérations. Pour permettre aux utilisateurs de modifier des données, vous pouvez activer les opérations de mise à jour, insertion ou suppression sur le contrôle LinqDataSource. Vous pouvez ensuite connecter le contrôle à un contrôle lié aux données pour permettre aux utilisateurs de mettre à jour les données, tel que le contrôle DetailsView ou GridView. Si vous souhaitez personnaliser les valeurs à mettre à jour, vous pouvez ajouter des paramètres ou créer un gestionnaire d'événements et modifier les valeurs dynamiquement.

Cette rubrique explique l'utilisation du contrôle LinqDataSource pour activer automatiquement les opérations de mise à jour, insertion et suppression. Elle explique également la personnalisation des valeurs mises à jour. Pour terminer, elle explique la création d'un gestionnaire d'événements pour définir par programme une propriété avant d'insérer ou de mettre à jour un enregistrement de base de données.

Les étapes pour activer les opérations automatiques de mise à jour, insertion et suppression sont toutes semblables et les procédures décrites dans cette rubrique indiquent comment activer les trois fonctions. Vous n'avez toutefois pas à les activer toutes les trois. Vous pouvez activer uniquement les fonctions dont vous avez besoin.

Si vous n'êtes pas familiarisé avec le contrôle LinqDataSource, consultez Vue d'ensemble du contrôle serveur Web LinqDataSource et Procédure pas à pas : récupération, mise à jour, insertion et suppression de données avec les contrôles LinqDataSource et DetailsView.

Mise à jour, insertion et suppression automatiques de données

Pour permettre au contrôle LinqDataSource de gérer automatiquement les mises à jour de données, les paramètres suivants sont requis :

Pour activer la mise à jour, l'insertion et la suppression automatiques de données

  1. Ajoutez un contrôle LinqDataSource à une page Web ASP.NET.

  2. Affectez à la propriété ContextTypeName le nom d'un objet qui dérive de la classe DataContext.

    Lorsque vous utilisez l'Objet Relation Concepteur dans Visual Studio 2008 pour créer une classe qui représente une table de base de données SQL, la classe générée dérive automatiquement de DataContext.

  3. Affectez à TableName le nom de la classe d'entité qui représente la table de base de données associée.

  4. Affectez aux propriétés EnableUpdate, EnableDelete et EnableInsert du contrôle LinqDataSource la valeur true.

  5. Ajoutez un contrôle lié aux données, tel qu'un contrôle DetailsView et affectez à sa propriété DataSourceID l'ID du contrôle LinqDataSource.

  6. Affectez à la propriété DataKeyNames du contrôle de données le nom de la colonne qui contient la clé primaire dans la table.

  7. Prévoyez un moyen permettant à l'utilisateur de basculer en mode de mise à jour, de suppression ou de modification dans le contrôle lié aux données.

    Par exemple, vous pouvez ajouter des boutons au contrôle lié aux données ou activer le contrôle pour créer automatiquement ces boutons.

    L'exemple suivant affiche le balisage déclaratif pour la partie d'une page Web ASP.NET qui contient un contrôle LinqDataSource et un contrôle DetailsView. Les contrôles sont configurés pour permettre à l'utilisateur d'afficher, mettre à jour, insérer et supprimer des données dans une table nommée Produits.

    <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>
    

Ajout des paramètres à des mises à jour, insertion ou modification des données

Par défaut, vous n'avez pas à ajouter de paramètres pour la mise à jour, l'insertion ou la suppression de données. Un contrôle lié aux données passe ses valeurs au contrôle LinqDataSource et le contrôle LinqDataSource utilise les valeurs pour définir la propriété correspondante. LINQ to SQL crée les commandes pour modifier la source de données. Pour plus d'informations, consultez LINQ to SQL.

Vous pouvez spécifier des paramètres pour les opérations de mise à jour, insertion ou suppression. C'est le cas pour pouvoir fournir une valeur par défaut ou spécifier si les valeurs chaînes vides doivent être converties en null. Vous n'avez pas à spécifier un paramètre pour chaque valeur mise à jour ou insérée, uniquement pour les valeurs à personnaliser. Les valeurs qui ne sont pas définies par un paramètre sont gérées automatiquement par le contrôle LinqDataSource.

Le contrôle LinqDataSource contient les collections suivantes pour gérer des paramètres : UpdateParameters, InsertParameters et DeleteParameters.

Pour ajouter des paramètres de mise à jour, d'insertion et de suppression de données

  • Ajoutez une définition de paramètre pour chaque valeur à modifier.

    L'exemple suivant montre comment ajouter un paramètre pour une propriété nommée Category. Le paramètre est ajouté aux collections UpdateParameters et 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>
    

    Lorsque l'utilisateur ne fournit pas de valeur pour la propriété Category, la valeur par défaut est enregistrée dans la base de données.

Définition des valeurs par programme

Pour définir des propriétés par programme avant d'exécuter une opération de données, vous pouvez créer des gestionnaires d'événements pour les événements Inserting, Updating et Deleting du contrôle LinqDataSource. Toute propriété non définie dans le gestionnaire d'événements est configurée automatiquement par le contrôle LinqDataSource.

Pour définir des valeurs par programme

  1. Créez un gestionnaire d'événements pour l'événement Inserting, Updating ou Deleting du contrôle LinqDataSource.

  2. Ajoutez le code au gestionnaire d'événements qui définit par programme la valeur à modifier.

    Les données à mettre à jour, insérer ou supprimer figurent dans les propriétés suivantes :

    Événement

    Propriété

    Classe

    Inserting

    NewObject

    LinqDataSourceInsertEventArgs

    Updating

    NewObject

    OriginalObject

    LinqDataSourceUpdateEventArgs

    Deleting

    OriginalObject

    LinqDataSourceDeleteEventArgs

    Toutes ces propriétés retournent un objet de type Object. Vous pouvez convertir les objets retournés par ces propriétés au type de classe d'entité qui représente les données. Après avoir effectué la conversion, vous pouvez définir les propriétés de ce type.

    L'exemple suivant illustre un gestionnaire d'événements pour l'événement Inserting qui définit la date et l'heure actuelles dans une colonne DateModified. Il effectue une conversion de l'objet dans la propriété NewObject en type 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;
    }
    

    L'exemple suivant illustre le balisage déclaratif d'un contrôle LinqDataSource qui lie la méthode LinqDataSource_Inserting à l'événement Inserting.

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

Compilation du code

Pour mettre à jour, insérer ou supprimer des données à l'aide du contrôle LinqDataSource, vous devez créer une classe d'entité qui représente une table de base de données. Vous pouvez créer une classe d'entité en utilisant l'Objet Relation Concepteur dans Visual Studio 2008.

Sécurité

Cet exemple comprend une zone de texte qui accepte une entrée d'utilisateur, ce qui constitue une menace potentielle pour la sécurité. Par défaut, les pages Web ASP.NET vérifient que les entrées d'utilisateur n'incluent pas de script ou d'éléments HTML. Pour plus d'informations, consultez Vue d'ensemble des attaques de script.

Pour plus d'informations sur le stockage d'une chaîne de connexion, consultez Comment : sécuriser des chaînes de connexion lors de l'utilisation de contrôles de source de données.

Pour plus d'informations sur l'affichage d'informations confidentielles dans les messages d'erreur, consultez Comment : afficher des messages d'erreur sécurisés.

Voir aussi

Concepts

Vue d'ensemble du contrôle serveur Web LinqDataSource

Référence

Parameter