Как EF noob Я пытаюсь использовать Entity Framework 6 Code First с MySql Server 5.6, который я установил на своем компьютере разработки.MySql Connector EF6
Я сделал очень маленький тестовый консольный проект. Я добавил пакеты NuGet:
- EntityFramework 6.0.2
- MySql.Data
- MySql.Data.Entities.EF6
Мои App.config выглядит следующим образом:
<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 имеют два класса:
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; }
}
Мой главный метод выглядит следующим образом:
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();
}
}
}
Когда я запускаю его я получаю System.NotSupportedException:
Unable to determine the provider name for provider factory of type
'MySql.Data.MySqlClient.MySqlClientFactory'. Make sure that the
ADO.NET provider is installed or registered in the application config
Я попытался добавить MySql.Data.My SqlClient.MySqlClientFactory к App.config:
<provider invariantName="MySql.Data.MySqlClient.MySqlClientFactory" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data"></provider>
Но потом я приезжаю в Entity.Core Буг:
The 'Instance' member of the Entity Framework provider type
'MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.8.3.0,
Culture=neutral, PublicKeyToken=c5687fc88969c44d' did not return an object
that inherits from 'System.Data.Entity.Core.Common.DbProviderServices'.
Что я делаю неправильно?
EDIT
Я попытался удалить Пакеты NuGet (MySql.Data и MySql.Data.Entities.EF6)
Затем я установил новую версию directly from MySql и теперь выше тестовый код работает успешно?
Это ничего не меняет в моем коде. Я отредактировал свое сообщение о том, как я работал над этим. – smerlung