4

Я пытаюсь создать веб-API в VS 2015 Pro (обновление 3) с использованием C# и таргетинга .NET Core.'DbContextOptionsBuilder' не содержит определения для 'UseSqlServer'

Я следую этому руководству: https://docs.efproject.net/en/latest/platforms/aspnetcore/new-db.html#install-entity-framework. Однако, я подключаю к базе данных MySQL вместо базы данных SQL Server - не знаю, сколько разница, что делает ...

Во всяком случае, в учебнике, я должен «Зарегистрировать мой контекст с инъекцией зависимостей» - так что я должен добавить следующую строку в ConfigureServices раздел файла Startup.cs:

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

Однако VS дает мне следующую ошибку:

Ошибка CS1061 «DbContextOptionsBuilder» не содержит определения для «UseSqlServer» и не используется метод расширения «UseSqlServer», принимающий первый аргумент типа «DbContextOptionsBuilder» (вам не хватает директивы использования или ссылки на сборку?)

Любые идеи, почему?

Это то, что весь 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(); 
     } 
    } 
} 

Я также добавил пакет MySQL с помощью диспетчера пакетов, так что мой файл project.json содержит следующую запись:

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

Любые намеки о том, где я пошел неправильно было бы весьма признателен, так как я провел весь день, пытаясь понять это :(Спасибо ...

ответ

16

SqlServer - это сервер Microsoft Sql, а не MySql, для использования SqlServer вам понадобится пакет «Microsoft.EntityFrameworkCore.SqlServer»: «1.0. *».

При использовании MySql есть options.UseMySql

посмотреть tutorial for more

+0

Спасибо, Джо. Извините за задержку - я мог бы поклясться, что я уже отметил ваш пост как ответ .... извините за это ... – user1900799

10

Я получил эту ошибку, а также во время создания проекта с помощью SQL Server для базы данных. В моем случае мне пришлось добавить инструкцию using вручную - "с использованием Microsoft.EntityFrameworkCore;" , Это звучит немного очевидно, но это бросило меня, поскольку Visual Studio не добавляла оператор using через Quick Actions.

3

Если вы уже установили пакет «Microsoft.EntityFrameworkCore.SqlServer», а использование Ctrl + Space не может дать вам какой-либо опции, добавление «using Microsoft.EntityFrameworkCore» вручную решит мою проблему.

Смежные вопросы