Partager via


Procédure : créer une clé d'entité lorsqu'aucune clé n'est déduite (Entity Framework)

Cette rubrique décrit comment modifier manuellement un fichier .edmx pour modifier une clé d'entité lorsque l'Assistant EDM ou l'Assistant Mise à jour du modèle n'a pas pu déduire de clé d'entité.

Lorsque vous générez ou mettez à jour un fichier .edmx avec l'Assistant EDM ou l'Assistant Mise à jour du modèle, la clé d'un type d'entité est mappée à la clé primaire de la table correspondante. Si aucune clé primaire n'est définie (par exemple, dans une vue), les outils tentent de déduire une clé d'entité unique selon les colonnes de la table ou de la vue. La clé déduite est composée de toutes les colonnes non Nullable et non binaires de la table ou de la vue. Si la table ou vue contient uniquement des colonnes Nullable et binaires, aucune clé n'est déduite.

Si aucune clé d'entité n'est déduite, l'entité n'est pas ajoutée au modèle. Au lieu de cela, un commentaire de code qui contient l'élément EntityType (sans clé définie) est ajouté à la section SSDL du fichier .edmx.

Pour plus d'informations sur les clés d'entités, consultez EntityType Element (CSDL) et EntityType Element (SSDL).

Les procédures dans cette rubrique supposent que vous avez ouvert un fichier .edmx valide dans Visual Studio.

Dd163156.note(fr-fr,VS.100).gifRemarque :
Les modifications apportées à la section SSDL d'un fichier .edmx, comme suggéré dans les procédures suivantes, sont remplacées si vous utilisez l'Assistant Mise à jour du modèle pour mettre à jour votre modèle.Pour éviter de modifier manuellement le fichier .edmx dans ce cas, modifiez le schéma de la base de données afin que chaque table ait une clé primaire ou afin qu'une ou plusieurs colonnes de chaque table ou vue soit non Nullable ou non binaires.

Ajout d'une clé d'entité lorsqu'aucune clé n'est déduite d'une table

La procédure suivante s'applique à un type d'entité qui correspond à une table. Cette procédure suppose que vous avez ouvert le fichier .edmx dans l'Éditeur XML.

Si le Concepteur d'entités ne peut pas déduire une clé d'entité à partir des colonnes d'une table, l'entité n'est pas ajoutée au modèle. Au lieu de cela, un commentaire de code qui contient l'élément EntityType (sans clé définie) est ajouté à la section SSDL du fichier .edmx.

Pour ajouter une clé d'entité lorsqu'aucune clé n'est déduite d'une table

  1. Supprimez les marques de commentaire de l'élément EntityType dans la section SSDL du fichier .edmx.

  2. Définissez la clé pour le type d'entité en ajoutant les éléments Key appropriés à l'élément EntityType. Pour plus d'informations, consultez EntityType Element (SSDL).

    Dd163156.note(fr-fr,VS.100).gifRemarque :
    La ou les colonnes utilisées pour définir la clé d'entité doivent identifier de façon unique une ligne dans la table.

  3. Dans la section SSDL, ajoutez un élément EntitySet qui spécifie la table à laquelle le type d'entité ajouté est mappé. Pour plus d'informations, consultez EntitySet Element (EntityContainer SSDL).

  4. Dans la section CSDL, ajoutez un élément EntityType qui correspond au type d'entité SSDL ajouté. Pour plus d'informations, consultez EntityType Element CSDL.

  5. Dans la section de mappage C-S (conceptuel à stockage), ajoutez un élément EntitySetMapping qui spécifie le mappage entre les types d'entité SSDL et CSDL ajoutés. Pour plus d'informations, consultez EntitySetMapping Element (MSL).

Ajout d'une clé d'entité lorsqu'aucune clé n'est déduite d'une vue

La procédure suivante s'applique à un type d'entité qui correspond à une vue. Cette procédure suppose que vous avez ouvert le fichier .edmx dans l'Éditeur XML.

Si le Concepteur d'entités ne peut pas déduire une clé d'entité à partir des colonnes d'une vue, l'entité n'est pas ajoutée au modèle. Au lieu de cela, un commentaire de code qui contient l'élément EntityType (sans clé définie) est ajouté à la section SSDL du fichier .edmx.

Pour ajouter une clé d'entité lorsqu'aucune clé n'est déduite d'une vue

  1. Supprimez les marques de commentaire de l'élément EntityType dans la section SSDL du fichier .edmx.

  2. Définissez la clé pour le type d'entité en ajoutant les éléments Key appropriés à l'élément EntityType. Pour plus d'informations, consultez EntityType Element (SSDL).

    Dd163156.note(fr-fr,VS.100).gifRemarque :
    La ou les colonnes utilisées pour définir la clé d'entité doivent identifier de façon unique une ligne dans la vue.

  3. Ajoutez une requête de définition au modèle. Pour plus d'informations, consultez Procédure : ajouter une requête de définition (Entity Framework).

Voir aussi

Concepts

Présentation d'un fichier .edmx (Entity Framework)