- EntityFramework 6.0.2
- MySql.Data
- MySql.Data.Entities.EF6
<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 have two classes:
MyContext:
public class MyContext : DbContext
{
public MyContext(DbConnection connection)
: base(connection, true)
{
}
public DbSet<MyEntity> MyEntities { get; set; }
}
我的实体:
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:
无法确定类型为'MySql.Data.MySqlClient.MySqlClientFactory'的提供程序工厂的提供程序名称。请确保在应用程序配置中安装或注册ADO.NET提供程序
我尝试将MySql.Data.MySqlClient.MySqlClientFactory添加到App.config文件中:
<provider invariantName="MySql.Data.MySqlClient.MySqlClientFactory" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data"></provider>
但是我遇到了Entity.Core的Bug:
Entity Framework提供程序类型'MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data,Version=6.8.3.0,Culture=neutral,PublicKeyToken=c5687fc88969c44d'的'Instance'成员没有返回继承自'System.Data.Entity.Core.Common.DbProviderServices'的对象。
我做错了什么?
编辑
我尝试移除NuGet包(MySql.Data和MySql.Data.Entities.EF6)
然后我直接从MySql官网安装了新版本,并且现在上述测试代码可以成功运行?