1
votes

Erreur lors de la tentative de création d'un contrôleur dans l'application Web .NET CORE

J'ai une application Web .NET CORE créée dans Visual Studio 2017. Elle a été créée en tant que modèle vide.

Le startup.cs a le code ci-dessous

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 
WebHost.CreateDefaultBuilder(args).UseStartup<Startup>();
}

Le programme.cs est comme ci-dessous:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
        services.AddSingleton<IInventoryServices, InventoryServices>();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        app.UseMvcWithDefaultRoute();
    }

J'ai essayé de créer un contrôleur. Le type de contrôleur que j'ai choisi d'ajouter était «MVC Controller with views, using Entity Framework». En essayant de créer, dans la fenêtre j'ai spécifié la classe de modèle et coché pour «Générer des vues», «Bibliothèques de scripts de référence» et «Utiliser la page de mise en page» qui sont d'ailleurs cochées par défaut. La zone de texte pour spécifier la page de mise en page est laissée vide.

En essayant de créer le contrôleur, j'obtiens l'erreur ci-dessous:

Une erreur s'est produite lors de l'exécution du générateur de code sélectionné: Scaffolding n'a pas réussi à modifier la classe de démarrage pour enregistrer le nouveau contexte à l'aide de l'injection de dépendances. Assurez-vous qu'il y a une classe de démarrage et une propriété de configuration

Impossible de comprendre pourquoi cette erreur se produit. Est-ce à cause d'un problème de DI ou de contexte d'entité?


1 commentaires

AminGolmahalle a raison, suivez le tutoriel: docs.microsoft.com/en-us/aspnet/core/tutorials/firs‌ t-mvc-app /…


3 Réponses :


0
votes

Vous devez d'abord configurer l'injection de dépendances du DbContext. Ce tutoriel explique étape par étape ce que vous devez faire.

ASP.NET avec Entity Framework


0 commentaires

0
votes

Vous devez vous assurer que le DbContext est également inscrit dans la méthode ConfigureServices () de la classe de démarrage.

Première interface de configuration IConfiguration dans la classe de démarrage:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=YourDatabaseName;Trusted_Connection=True;MultipleActiveResultSets=true"
  } 
}

puis ajoutez le code ci-dessous pour configurer la méthode des services:

services.AddDbContext<AppContext>(options => 
       options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

puis Ajouter une adresse ConnectionString dans appsettings.json :

public IConfiguration Configuration { get; }

    public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }


6 commentaires

Merci pour la réponse. Juste une précision. Je n'ai pas compris l'injection IConfiguration. Puis-je savoir quel en est le but?


Interface IConfiguration pour lire la configuration depuis appsettings.json en fonction de la clé. Pourriez-vous surmonter le problème?


en savoir plus: docs.microsoft.com/en-us/aspnet/core/fundamentals/configurat‌ ion /…


Je suis un débutant dans Core. Je n'ai pas de appsettings, json dans mon projet. Il y a un launchSettings.json dans la section des propriétés. Comment dois-je ajouter le ConnectionString. s'il vous plaît donnez votre avis


@ sms101 Pour en savoir plus sur concpet asp.net core, veuillez consulter ce lien: stackoverflow.com/a/59701684/5576498


@ sms101 si votre problème est résolu, veuillez accepter ma réponse.



0
votes

Essayez de mettre à jour les packages des projets à l'aide du gestionnaire de packages nuget vers la dernière version.

Cela a résolu le problème "J'utilise .Net 5.0", donc cela pourrait fonctionner pour vous.


0 commentaires