sme*_*ung 8 mysql entity-framework
作为EF noob,我试图使用我在开发计算机上安装的MySql Server 5.6实现Entity Framework 6 Code First.
我做了一个非常小的测试控制台项目.我添加了NuGet包:
我的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>
Run Code Online (Sandbox Code Playgroud)
有两个类:
MyContext:
public class MyContext : DbContext
{
public MyContext(DbConnection connection)
: base(connection, true)
{
}
public DbSet<MyEntity> MyEntities { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
myEntity所:
public class MyEntity
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的主要方法如下:
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到一个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>
Run Code Online (Sandbox Code Playgroud)
但后来我到达了Entity.Core Bug:
实体框架提供程序类型'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安装了新版本,现在上面的测试代码成功运行了吗?
小智 7
你必须保留两个配置部分,就像这样
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite" /> <add name="SQLite Data Provider" description=".Net Framework Data Provider for SQLite" invariant="System.Data.SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
<remove invariant="MySql.Data.MySqlClient" /><add name="MySQL" description="ADO.Net driver for MySQL" invariant="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data"/>
</DbProviderFactories>
</system.data>
<entityFramework>
<providers>
<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.SQLiteProviderServices, System.Data.SQLite.Linq, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider>
</providers>
</entityFramework>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14707 次 |
| 最近记录: |