Impossible de récupérer les métadonnées dans MVC4 avec Entity Framework et MySql
Dans le but d'établir un modèle de données pour MVC4 à l'aide d'Entity Framework 4.4 avec MySql, les utilisateurs peuvent rencontrer une erreur liée à la récupération des métadonnées. Ce message d'erreur se lit généralement :
Unable to retrieve metadata for BTD.Data.Product using the same
DbCompiledModel to create context against different types of database
servers is not supported. Instead, create a separate DbCompiledModel
for each type of server being used.
Copier après la connexion
Raisons de l'erreur
Ce problème peut survenir en raison de l'incapacité de l'échafaudage du contrôleur MVC4 à reconnaître avec précision les chaînes de connexion MySql lorsque générer du code CRUD Entity Framework (EF).
Solution
Pour résoudre l'erreur, suivez ces étapes :
-
Modifier la chaîne de connexion :
Lors de la génération du code EF CRUD, modifiez la chaîne de connexion pour qu'elle pointe vers une base de données Microsoft SQL Server (par exemple, en utilisant System.Data.SqlClient).
-
Échafaudez la Code :
Ajoutez le contrôleur et affichez l'échafaudage tout en utilisant la chaîne de connexion modifiée.
-
Rétablissez la chaîne de connexion :
Une fois l'échafaudage terminé, rétablissez la connexion chaîne à la configuration MySql d'origine à l'aide de MySql.Data.MySqlClient.
Notes supplémentaires
- Il a été observé que le passage à une base de données SQL Server , l'échafaudage du code et le retour à la chaîne de connexion MySql peuvent résoudre le problème.
- Assurez-vous que votre version de MySql est prise en charge et que le fournisseur .NET approprié est installé.
- Vérifiez la structure de la table de base de données. et assurez-vous qu'il s'aligne sur le modèle de données EF.
- Envisagez d'utiliser l'[approche Code-First Migration](https://docs.microsoft.com/en-us/ef/core/get-started/using -mvc/migrations) avec EF.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!