web-dev-qa-db-fra.com

Impossible de créer un objet de type '[nom de DBContext]'. Pour les différents modèles pris en charge au moment de la conception

Je suis l'un des cours de Mosh Hamedani sur ASP.NET MVC à Udemy.

Je suis tombé sur une erreur lors de la conception de ma base de données à l'aide du code-premier (cadre d'entité).

Au début, j'ai eu l'erreur de "Aucun dBContext n'a été trouvé en montage" . Après avoir résolu ce problème, un autre a progressé de nulle part.

L'image ci-dessous vous montrera l'erreur trouvée lors de l'ajout d'une migration. J'ai déjà cherché la même erreur mais en vain. Je me débats au cours des deux dernières heures, mais rien n'est résolu jusqu'à présent.

S'il vous plaît, quelqu'un, aidez-moi. Merci

impossible de créer un objet de type 'vidly_context'. Pour les différents modèles pris en charge au moment de la conception, voir https://go.microsoft.com/fwlink/?LinkID=851728

16
OoMaR jOhUr

J'ai rencontré ce problème lorsque les premières migrations du code Core EF dans une solution .NET CORE 3 contenant à la fois un projet MVC et un projet BLAZOR.

Si j'ai le projet de démarrage de la solution défini sur le projet Blazor, je reçois l'erreur lors de l'utilisation add-migration, mais je ne sais pas si j'ai le projet de démarrage défini sur le projet MVC.

De la lecture de page de documentation liée à par le message d'erreur et comparer le code dans les fichiers STERTUP.CS pour les deux projets, je ne sais pas pourquoi cela serait, mais change temporairement le projet de démarrage au MVC Le projet le corrige pour moi.

3
tomRedox

1- Assurez-vous de définir votre projet Web comme définir comme projet de démarrage

2-console de gestionnaire de paquets, définissez votre couche d'accès aux données (le cas échéant) sous forme de par défaut

3- Puis exécutez la commande à nouveau

0
Baqer Naqvi

Ce n'est pas vraiment un problème avec le cadre, c'est ainsi que vous avez construit votre application. Par exemple, si vous avez utilisé DI et que vous avez eu le webapi (ou le projet MVC) séparé de votre couche d'accès aux données, cela vous apparaîtra car lorsque vous essayez d'ajouter une migration, vous ne pouvez pas trouver la chaîne de connexion que vous avez essayer d'injecter (cela était en fait mon cas).

Une bonne explication se trouve ici sur GitHub :

Ce n'est certainement pas un problème d'application qui correspond à cette portée des questions de ce repo, mais je vais essayer de vous donner quelques indications de toute façon.

Vous obtenez cette erreur car pour générer des migrations dont vous avez besoin soit:

  1. Un dBContext avec un constructeur par défaut (c'est-à-dire un constructeur sans paramètre)

  2. Être capable d'obtenir le dbcontext de ApplicationsVices (c'est-à-dire une injection de dépendance)

  3. Une usine de temps de conception qui renvoie un dBContext correctement configuré.

Puisque ApplicationDBContext Constructor a un paramètre, vous devez utiliser les options 2 ou 3. Voir les détails de l'article: https://docs.microsoft.com/ef/core/miscellane/cli/dbcontext-Création Englisons

Mais l'option 2 (celle utilisée à l'origine) ne fonctionne plus, car le démarrage du programme a été modifié pour améliorer la journalisation.

Et, comme il n'y a pas de conception de conception pour ApplicationDBContext, vous ne pourrez tout simplement pas créer de migrations pour le moment.

Si vous voulez en savoir plus sur cette façon de créer des migrations, vous pouvez:

Créez une applicationDBContextDesignTimeFactory, similaire à CatalogContextDesignFactory> ou IntegationEventLogContextDesignTimeFactory ou essayer avec d'autres microservices comme Catalog.api, qui a déjà sa conception.

0
Luis

Dans mon cas, j'ai fait le appsettages.Development.json Fichier obligatoire mais je n'ai pas créé le fichier. Si vous ne créez pas le fichier de paramètres spécifique à l'environnement, définissez-le comme facultatif: vrai

var builder = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                .AddJsonFile($"appsettings.{environment.EnvironmentName}.json", optional: true, reloadOnChange: true)
                .AddEnvironmentVariables();

Mais il est important de noter que l'erreur peut ne pas nécessairement lié à la DBContext et à ses configurations. Il pourrait s'agir d'une autre erreur dans votre démarrage de l'application qui empêche l'application de démarrer de manière à ce que l'outillage EF puisse faire la migration. En tant que mécanisme pour localiser toute autre erreur dans votre démarrage du projet, vous pouvez ajouter un message de console à différentes lignes de votre démarrage. Vous pouvez même inspecter des valeurs d'appSeting tels que ConnexionsTrings à l'aide de la console tout en essayant de migrer.

 Console.WriteLine("I can see this because the app was able to proceed this far."); 
0
yibe