EF Exclusion du modèle de données en raison du manque de clé primaire
Il est courant que certaines tableaux manquent de clés primaires lors de l'intégration de bases de données existantes dans Entity Framework (EF) 4.0. Ce problème se produit lors de la création d'un nouveau modèle de données d'entité, provoquant un message d'erreur indiquer la clé primaire manquante, puis exclure le tableau.
On pense généralement que les clés primaires physiques doivent être ajoutées au tableau affecté pour résoudre ce problème. Cependant, il existe une solution de contournement qui vous permet d'utiliser ces tables sans modifier leur schéma.
Comme le suggère Tillito, cette solution de contournement consiste à modifier l'instruction SELECT de la vue problématique dans une nouvelle instruction SELECT. De cette façon, vous enveloppez l'instruction SELECT originale, vous pouvez utiliser la fonction ISNULL pour spécifier la colonne à utiliser comme clé principale. Au lieu de cela, vous pouvez utiliser la fonction nullif pour empêcher les colonnes d'être spécifiées sous forme de clés principales.
Exemple:
Considérez l'exemple suivant:
SELECT
ISNULL(MyPrimaryID,-999) MyPrimaryID,
NULLIF(AnotherProperty,'') AnotherProperty
FROM ( ... ) AS temp
Dans cet exemple, la fonction ISNULL force EF à reconnaître "MyPrimaryId" comme la clé principale, tandis que la fonction Nullif garantit qu'une "autre propriété" n'est pas considérée comme la clé principale.
En appliquant cette technologie, vous pouvez éviter la nécessité de modifier le schéma de la base de données et d'intégrer de manière transparente les tables existantes dans votre modèle de données EF, permettant les opérations de données sans avoir besoin de modifier la clé primaire physique.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3