Conector MySQL EF6
Como EF noob, estoy tratando de usar Entity Framework 6 Code First con un MySql Server 5.6 que instalé en mi computadora de desarrollo.
He hecho un proyecto de consola de prueba muy pequeño. He añadido los paquetes de NuGet:
EntityFramework 6.0.2MySql.DataMySql.Data.Entities.EF6Mi App.config se ve así:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider>
</providers>
</entityFramework>
A tener dos clases:
MyContext:
public class MyContext : DbContext
{
public MyContext(DbConnection connection)
: base(connection, true)
{
}
public DbSet<MyEntity> MyEntities { get; set; }
}
MyEntity:
public class MyEntity
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
}
Mi método principal se ve así:
static void Main(string[] args)
{
using (MySqlConnection conn = new MySqlConnection("Server=127.0.0.1;Database=calibrationtest;Uid=calibration;Pwd=*******"))
{
using (MyContext context = new MyContext(conn))
{
context.MyEntities.Add(new MyEntity()
{
Name = "1234"
});
context.SaveChanges();
}
}
}
Cuando lo ejecuto obtengo una excepción System.NotSupportedException:
No se puede determinar el nombre del proveedor para la fábrica de proveedores de tipo 'MySql.Data.MySqlClient.MySqlClientFactory'. Asegúrese de que el proveedor ADO.NET esté instalado o registrado en la configuración de la aplicación
Intenté agregar MySql.Data.MySqlClient.MySqlClientFactory al App.config:
<provider invariantName="MySql.Data.MySqlClient.MySqlClientFactory" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data"></provider>
Pero luego llego a laEntidad.Core Insecto:
El miembro 'Instancia' del tipo de proveedor Entity Framework 'MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version = 6.8.3.0, Culture = neutral, PublicKeyToken = c5687fc88969c44d' no devolvió un objeto que hereda de 'System.Data .Entity.Core.Common.DbProviderServices '.
¿Qué estoy haciendo mal?
EDITAR
Intenté eliminar los paquetes NuGet (MySql.Data y MySql.Data.Entities.EF6)
Luego instalé la nueva versión.directamente desde MySql y ahora el código de prueba anterior se ejecuta con éxito?