As a EF noob I am trying to use Entity Framework 6 Code First with a MySql Server 5.6 which I installed on my development computer.
I have made a very small test console project. I have added the NuGet packages:
EntityFramework 6.0.2
MySql.Data
MySql.Data.Entities.EF6
My App.config looks like this:
A have two classes:
MyContext:
public class MyContext : DbContext
{
public MyContext(DbConnection connection)
: base(connection, true)
{
}
public DbSet MyEntities { get; set; }
}
MyEntity:
public class MyEntity
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
}
My main method looks like this:
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();
}
}
}
When I run it I get a 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
I tried to add MySql.Data.MySqlClient.MySqlClientFactory to the App.config:
But then I arrive at the Entity.Core Bug:
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'.
What am I doing wrong?
EDIT
I tried removing the NuGet Packages (MySql.Data and MySql.Data.Entities.EF6)
Then I installed the new version directly from MySql and now the above test code runs successfully?
解决方案
you must keep both config sections,
like this