Saltar al contenido

No se puede encontrar el método UseMysql en DbContextOptions

Hugo, miembro de este staff, nos ha hecho el favor de crear este escrito ya que controla muy bien dicho tema.

Solución:

Necesitas

using Microsoft.EntityFrameworkCore;
using MySQL.Data.EntityFrameworkCore.Extensions;

Oracle no cumple con las prácticas estándar al usar la inyección de dependencia, por lo que todo es un poco diferente. La práctica estándar es poner los métodos de extensión para Inyección de Dependencia en Microsoft.Extensions.DependencyInjection espacio de nombres, que se incluye en la mayoría de los proyectos de aplicaciones ASP.NET Core para que el método esté disponible automáticamente cuando se importa un paquete.

Futuros lectores.

Si está utilizando “MySql.Data.EntityFrameworkCore”:

Tengo esto: (nota, el CASO de ninguna palabra/frase que contiene “MySql“.)

En mi capa superior (.exe generalmente) donde hago la configuración DI.

csproj (capa superior)


archivo cs con DI

using Microsoft.EntityFrameworkCore;
using MySql.Data.EntityFrameworkCore;


///where servColl is IServiceCollection 
servColl.AddDbContext(options => options.UseMySQL("server=localhost;database=library;user=mysqlschema;password=mypassword"));

NOTA arriba del CASO de Usar MySQL. Por qué el espacio de nombres es “MySql” y el “uso” es “UseMySQL” (??)… vale la pena señalar esta inconsistencia (con el cAsE) si te estás golpeando la cabeza contra la pantalla. 🙂

y en la “capa inferior” (mi “capa de datos”) donde codifico a EntityFramework Core (pero no a ningún concreto específico)

csproj (capa de datos) (tenga en cuenta las versiones 2.1 …….)



======================================

SI está utilizando Pomelo.EntityFrameworkCore.MySql. (Lo cual personalmente creo que es una mejor opción).

En mi capa superior (.exe generalmente) donde hago la configuración DI.

csproj (capa superior)

 

archivo cs con DI

using Microsoft.EntityFrameworkCore;
using Pomelo.EntityFrameworkCore.MySql.Infrastructure;


///where servColl is IServiceCollection 
servColl.AddDbContext(options => options.UseMySql("server=localhost;database=library;user=mysqlschema;password=mypassword"));

NOTA arriba del CASO de Usar MySql. Esto es consistente. Así que puntos de bonificación para Pomelo.EntityFrameworkCore.MySql por la consistencia entre “usar (namepsace)” y el registro DI “UseMySql”.

y en la “capa inferior” (mi “capa de datos”) donde codifico a EntityFramework Core (pero no a ningún concreto específico)

csproj (capa de datos)



Aquí tienes las comentarios y puntuaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *