web-dev-qa-db-fra.com

'DbContextOptionsBuilder' ne contient pas de définition pour 'UseSqlServer'

J'essaie de créer une API Web dans VS 2015 Pro (mise à jour 3) en utilisant C # et en ciblant .NET Core.

Je suis ce tutoriel: https://docs.efproject.net/en/latest/platforms/aspnetcore/new-db.html#install-entity-framework . Cependant, je me connecte à une base de données MySQL au lieu d'une base de données SQL Server - je ne sais pas quelle différence cela fait ...

Quoi qu'il en soit, dans le tutoriel, je dois "Enregistrer mon contexte avec l'injection de dépendances" - donc je dois ajouter la ligne suivante au ConfigureServices section du fichier Startup.cs :

var connection = Configuration.GetConnectionString("DefaultConnection");
services.AddDbContext< Models.PropWorxContext > (options => options.UseSqlServer(connection));;

Cependant, VS me donne l'erreur suivante:

L'erreur CS1061 'DbContextOptionsBuilder' ne contient pas de définition pour 'UseSqlServer' et aucune méthode d'extension 'UseSqlServer' acceptant un premier argument de type 'DbContextOptionsBuilder' a pu être trouvée (vous manque une directive d'utilisation ou une référence d'assembly?)

Des idées pourquoi?

Voici à quoi ressemble tout le fichier Startup.cs:

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;

namespace PropWorxAPI
{
    public class Startup
    {
        public Startup(IHostingEnvironment env)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                .AddEnvironmentVariables();
            Configuration = builder.Build();
        }

        public IConfigurationRoot Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // Add framework services.
            services.AddMvc();

            var connection = Configuration.GetConnectionString("DefaultConnection");
            services.AddDbContext< Models.PropWorxContext > (options => options.UseSqlServer(connection));
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
            loggerFactory.AddDebug();

            app.UseMvc();
        }
    }
}

J'ai également ajouté le package MySQL à l'aide du gestionnaire de packages, afin que mon fichier project.json contienne cette entrée:

*"MySql.Data.EntityFrameworkCore": "7.0.6-IR31"*

Tout indice indiquant où je me suis trompé serait grandement apprécié, car j'ai passé toute la journée à essayer de le comprendre :( Merci ...

10
Fabricio Rodriguez

SqlServer est Microsoft Sql Server et non MySql, pour utiliser SqlServer, vous aurez besoin du package "Microsoft.EntityFrameworkCore.SqlServer": "1.0. *".

Si vous utilisez MySql, il existe des options.

voir ceci tutoriel pour plus

21
Joe Audette

J'ai également eu cette erreur lors de la configuration d'un projet à l'aide de Sql Server pour une base de données. Dans mon cas, j'ai dû ajouter une instruction using manuellement - "using Microsoft.EntityFrameworkCore;" . Cela semble un peu évident, mais cela m'a jeté car Visual Studio n'ajoutait pas l'instruction using via des actions rapides.

12
Frank Cannon

Si vous avez déjà installé le package "Microsoft.EntityFrameworkCore.SqlServer" et que l'utilisation de Ctrl + Espace ne peut vous donner aucune option, l'ajout de "l'aide de Microsoft.EntityFrameworkCore" a résolu manuellement mon problème.

Dans votre dossier de projet, saisissez ceci dans votre ligne de commande:

dotnet add package Pomelo.EntityFrameworkCore.MySql -v 2.1.2
0
user10930337

Installez la boîte à outils compacte Sqlite/Sql Server, puis créez la base de données si elle n'est pas créée, puis modifiez la chaîne de connexion dans appsettings.json

0
Moaz Salem

paquet manquant. Cela a fonctionné pour moi. tools-NUget package-package manager-copy coller après l'installation:

Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 3.1.1

0
Bnezes