usesqlserver strings password net getconnectionstring framework connectionstrings asp asp.net-core entity-framework-core

asp.net core - strings - Entity Framework core: DbContextOptionsBuilder ''no contiene una definición de'' usesqlserver ''y ningún método de extensión'' usesqlserver ''



connection strings ef core (11)

Copiando el siguiente código en TodoApi.csproj desde https://github.com/aspnet/Docs/tree/master/aspnetcore/tutorials/first-web-api/sample/TodoApi solucioné un problema similar para mí.

<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp2.0</TargetFramework> </PropertyGroup> <ItemGroup> <Folder Include="wwwroot/" /> </ItemGroup> <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" /> </ItemGroup> <ItemGroup> <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" /> </ItemGroup> </Project>

Microsoft.AspNetCore.All puede ser excesivo pero incluye EntityFrameworkCore

Soy nuevo en EF Core y estoy tratando de que funcione con mi proyecto asp.net core.

Recibo el error anterior en mi startup.cs cuando intento configurar el dbcontext para usar una cadena de conexión desde la configuración. Estoy siguiendo este tutorial: https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro

El código problemático 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 método usesqlserver 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 búsqueda en línea apunta a referencias faltantes, pero parece que no puedo encontrar cuál me estoy perdiendo (ver imagen). references

Cualquier ayuda sería apreciada grandemente,

Gracias


Creo que esto se puede resolver agregando una referencia de proyecto a Microsoft.EntityFrameworkCore.SqlServer.Design

Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design

Microsoft.EntityFrameworkCore.SqlServer no se instaló directamente en mi proyecto, pero el paquete .Design lo instalará de todos modos como un requisito previo.


Estaba usando el código de Visual Studio.

1) Intente instalar el paquete ''Microsoft.EntityFrameworkCore.SqlServer'' especificando el número de versión.

Código VS :

''dotnet add package Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1''

Estudio visual:-

''Install-Package Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1''

Consulte el enlace '' Paquete'' Microsoft.EntityFrameworkCore.SqlServer ''es incompatible con'' todos ''los marcos en el proyecto para hacerlo.

2) Luego agregue el espacio de nombres '' usando Microsoft.EntityFrameworkCore; ''manualmente en el archivo Startup.cs.

Consulte el siguiente enlace https://github.com/aspnet/EntityFramework/issues/7891 .

3) Si obtiene algún problema de dependencia para '' Microsoft.EntityFrameworkCore.SqlServer.Design'' , como "Paquete '' Microsoft.EntityFrameworkCore.Design'' es incompatible con ''todos los marcos'' en el proyecto ", necesitamos ejecutar el siguiente comando,

Código VS: -

dotnet agrega el paquete Microsoft.EntityFrameworkCore.Design -v 1.1

Estudio visual

Paquete de instalación Microsoft.EntityFrameworkCore.Design -v 1.1



Instalamos Microsoft.EntityFrameworkCore.SqlServer NuGet Package.

Microsoft.EntityFrameworkCore.SqlServer

PM > Install-Package Microsoft.EntityFrameworkCore.SqlServer

Entonces,

services.AddDbContext<AspDbContext>(options => options.UseSqlServer(config.GetConnectionString("optimumDB")));


Instale a continuación el paquete NuGet resolverá su problema

Microsoft.EntityFrameworkCore.SqlServer

Paquete de instalación Microsoft.EntityFrameworkCore.SqlServer


Logré evitar esto simplemente

Agregue SqlServerDbContextOptionsExtensions a la clase en cuestión Resuelva SqlServerDbContextOptionsExtensions

Esto soluciona el problema, debe faltar alguna referencia por defecto.


Para asp.net core versión 2.1, asegúrese de agregar el siguiente paquete para solucionar el problema. (Al menos esto soluciona el problema usando SQLite)

dotnet add package Microsoft.EntityFrameworkCore.Sqlite dotnet add package Microsoft.EntityFrameworkCore.Design

Aquí está la referencia de la documentación que usa SQLite con el núcleo del marco de la entidad. https://docs.microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite


Siga los pasos a continuación.

Instale el proveedor de base de datos de Entity Framework Core Design y SQL Server para Entity Framework Core:

dotnet add package Microsoft.EntityFrameworkCore.Design dotnet add package Microsoft.EntityFrameworkCore.SqlServer

Entidad Entidad Framework Core:

using Microsoft.EntityFrameworkCore;

Y configura tu DbContext:

var connectionString = Configuration.GetConnectionString("myDb"); services.AddDbContext<MyDbContext>(options => options.UseSqlServer(connectionString) );


Tuve que usar la linea

services.AddEntityFrameworkSqlite().AddDbContext<MovieContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MovieContext")));

en el método ConfigureServices en el Startup.cs


añadiendo using Microsoft.EntityFrameworkCore;

resuelto manualmente el problema para mi

Encontrado que aquí