Entity Framework Core: DbContextOptionsBuilder no contiene una definición para 'usesqlserver' ni ningún método de extensión 'usesqlserver'

Resuelto Maxime Laflamme asked hace 7 años • 0 respuestas

Soy nuevo en EF core y estoy intentando que funcione con mi proyecto ASP.NET Core.

Recibo el error anterior startup.cscuando intento configurar DbContextpara usar una cadena de conexión desde config. Estoy siguiendo este tutorial .

El código problemático está en startup.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.SpaServices.Webpack;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.EntityFrameworkCore;
using tracV2.models;
using tracV2.data;

namespace tracV2
{
    public class Startup
    {
        // 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();

            services.AddSingleton<IConfiguration>(Configuration);

            string conn = Configuration.GetConnectionString("optimumDB");

            services.AddDbContext<tracContext>(options => options.usesqlserver(conn));
        }

El UseSqlServermétodo se reconoce si lo pongo directamente en el contexto:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;

namespace tracV2.data
{
    public class tracContext : DbContext
    {
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer("myrealconnectionstring");
        }

Toda mi investigación en línea apunta a referencias faltantes, pero parece que no puedo descubrir cuál me falta ( ver imagen ).

Maxime Laflamme avatar Mar 29 '17 22:03 Maxime Laflamme
Aceptado

Primero instalamos el paquete NuGet Microsoft.EntityFrameworkCore.SqlServer :

PM > Install-Package Microsoft.EntityFrameworkCore.SqlServer

Luego, después de importar el espacio de nombres con

using Microsoft.EntityFrameworkCore;

agregamos el contexto de la base de datos:

services.AddDbContext<AspDbContext>(options =>
    options.UseSqlServer(config.GetConnectionString("optimumDB")));
Win avatar Mar 29 '2017 15:03 Win

agregando using Microsoft.EntityFrameworkCore;

resolvió manualmente el problema para mí

Encontré eso aquí

Editar...

para dotnet core 3.1 agregar

Microsoft.EntityFrameworkCore.SqlServer

Victor.Uduak avatar Jul 09 '2017 05:07 Victor.Uduak