J'ai créé une vue dans ma base de données que je souhaiterais inclure dans mon modèle d'entité. Cependant, lorsque j'essaie de mettre à jour le modèle d'entité via VS 2008, un message d'avertissement m'informe que la vue TABLE OR VIEW que j'essaie d'ajouter n'a pas de clé primaire.
Il semble que pour ajouter une vue au modèle, celui-ci doit avoir un champ clé! Comment puis-je ajouter cette vue à mon modèle si les vues ne sont pas autorisées à avoir un champ clé, du moins dans firebird qui est le DBMRS que j’utilise?.
Une idée de comment résoudre ceci?
Il existe une excellente réponse à cette question ici: Entity Framework et SQL Server View (voir réponse acceptée: https://stackoverflow.com/a/2715299/53510 .)
EF déduit une PK pour les vues en combinant tous les champs non nullables. Vous pouvez utiliser ISNULL et NULLIF pour manipuler la nullabilité des colonnes de vue, forçant ainsi EF à choisir le PK de votre choix.
Il n'y a pas de clé dans les vues Firebird. A la place, définissez un (ou plusieurs) champ sur 'Non null' à l'aide de la commande suivante:
update RDB$RELATION_FIELDS set RDB$NULL_FLAG = 1 where (RDB$FIELD_NAME = 'A_FIELD') and (RDB$RELATION_NAME = 'A_VIEW')
Puis réimportez la base de données dans le cadre de l'entité.