Les vues SQL Server peuvent-elles avoir des clés primaires et étrangères?

.net ado.net-entity-data-model database-design entity-framework sql-server

Question

Est-il possible de définir des clés primaires et étrangères pour les vues de base de données dans Microsoft SQL Server Management Studio? Comment?

J'essaie de créer un modèle de données d'entité ADO.NET pour lire quatre anciennes tables de base de données mal formées que je ne peux pas modifier. J'ai créé des vues contenant uniquement les données dont j'ai besoin.

Les quatre vues doivent correspondre à un simple EDMX à trois entités avec une relation plusieurs à plusieurs.

Je reçois cette erreur lors de la création de mon modèle de données:

La table / vue '...' n'a pas de clé primaire définie et aucune clé primaire valide n'a pu être déduite. Ce tableau / vue a été exclu. Pour utiliser l'entité, vous devez revoir votre schéma, ajouter les clés correctes et supprimer le commentaire.

Il a correctement déduit les clés primaires de deux vues. Mais pas réussi à le faire avec les deux autres.

Une de mes vues de problèmes utilise des fonctions d'agrégat:

SELECT MAX(...) ... GROUP BY ...

L'autre doit avoir une clé primaire composée de deux clés étrangères.

Réponse populaire

Vous devez définir votre vue pour qu'elle:

  • Comprend toutes les colonnes PRIMARY KEY
  • N'utilise pas de JOIN
  • N'utilise aucune fonction d'agrégat ni celle de UNION

Toute ligne de votre vue doit correspondre à une seule ligne de la table.

Une de mes vues de problèmes utilise des fonctions d'agrégat

Il ne peut pas être mis à jour. Pour une entité en lecture seule, une solution à partir d' ici :

Lorsqu'aucune clé ne peut être déduite, un commentaire de code contenant l'élément EntityType correspondant (sans élément Key) est ajouté à la section SSDL du fichier .edmx.

Dans votre cas, puisqu'il semble que vous souhaitiez une entité en lecture seule, vous pouvez:

  1. décommenter l'entité SSDL
    • marquer une / quelques propriétés comme Nullable = "False"
    • ajouter les éléments clés appropriés
    • ajouter une requête de définition correspondante.

Pour la deuxième question:

L'autre doit avoir une clé primaire composée de deux clés étrangères

De la documentation :

Une table qui représente une relation plusieurs à plusieurs entre deux tables de la base de données peut ne pas avoir une entité équivalente dans le schéma conceptuel. Lorsque les outils EDM rencontrent une telle table sans autre colonne que les deux clés étrangères, la table de mappage est représentée dans le schéma conceptuel comme une association plusieurs-à-plusieurs au lieu d'une entité.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow