Złącze MySql EF6
Jako EF noob próbuję użyć najpierw kodu Entity Framework 6 z MySql Server 5.6, który zainstalowałem na moim komputerze programistycznym.
Zrobiłem bardzo mały projekt konsoli testowej. Dodałem pakiety NuGet:
EntityFramework 6.0.2MySql.DataMySql.Data.Entities.EF6Moja aplikacja App.config wygląda tak:
<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>
Masz dwie klasy:
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; }
}
Moja główna metoda wygląda tak:
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();
}
}
}
Po uruchomieniu otrzymuję wyjątek System.NotSupportedException:
Nie można określić nazwy dostawcy dla fabryki dostawców typu „MySql.Data.MySqlClient.MySqlClientFactory”. Upewnij się, że dostawca ADO.NET jest zainstalowany lub zarejestrowany w konfiguracji aplikacji
Próbowałem dodać MySql.Data.MySqlClient.MySqlClientFactory do App.config:
<provider invariantName="MySql.Data.MySqlClient.MySqlClientFactory" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data"></provider>
Ale potem docieram doEntity.Core Pluskwa:
Element „Instancja” typu dostawcy Entity Framework „MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version = 6.8.3.0, Culture = neutral, PublicKeyToken = c5687fc88969c44d” nie zwrócił obiektu dziedziczącego z „System.Data .Entity.Core.Common.DbProviderServices ”.
Co ja robię źle?
EDYTOWAĆ
Próbowałem usunąć pakiety NuGet (MySql.Data i MySql.Data.Entities.EF6)
Następnie zainstalowałem nową wersjębezpośrednio z MySql a teraz powyższy kod testowy działa poprawnie?