MySQL Connector EF6
Als EF-Neuling versuche ich, Entity Framework 6 Code First mit einem MySql Server 5.6 zu verwenden, den ich auf meinem Entwicklungscomputer installiert habe.
Ich habe ein sehr kleines Testkonsolenprojekt gemacht. Ich habe die NuGet-Pakete hinzugefügt:
EntityFramework 6.0.2MySql.DataMySql.Data.Entities.EF6Meine App.config sieht so aus:
<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 hat zwei Klassen:
MeinKontext:
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; }
}
Meine Hauptmethode sieht so aus:
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();
}
}
}
Wenn ich es ausführe, erhalte ich eine System.NotSupportedException:
Der Providername für die Provider-Factory vom Typ "MySql.Data.MySqlClient.MySqlClientFactory" konnte nicht ermittelt werden. Stellen Sie sicher, dass der ADO.NET-Anbieter in der Anwendungskonfiguration installiert oder registriert ist
Ich habe versucht, MySql.Data.MySqlClient.MySqlClientFactory zur App.config hinzuzufügen:
<provider invariantName="MySql.Data.MySqlClient.MySqlClientFactory" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data"></provider>
Aber dann komme ich zumEntity.Core Fehler:
Das Mitglied 'Instance' des Entity Framework-Anbietertyps 'MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version = 6.8.3.0, Culture = neutral, PublicKeyToken = c5687fc88969c44d' hat kein Objekt zurückgegeben, das von 'System.Data' erbt .Entity.Core.Common.DbProviderServices '.
Was mache ich falsch?
BEARBEITEN
Ich habe versucht, die NuGet-Pakete (MySql.Data und MySql.Data.Entities.EF6) zu entfernen.
Dann habe ich die neue Version installiertdirekt von MySql und jetzt läuft der obige Testcode erfolgreich?