1.需要引用的文档
MySql.Data.dll
MySql.Data.Entity.EF6.dll
1.1注意事项:
1.11 MySql.Data.Entity依赖于 MySql.Data,需要保证这两个的版本相同。
1.12 EF版本必须高于6.0。
2.添加System.data配置
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=你的版本号, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
3.更改数据库连接字符串ConnectionStrings:
<connectionStrings>
<add name="你的应用程序名,可以复制默认的NAME" connectionString="(DEMO示范,自己写自己的连接字符串)Data Source=127.0.0.1;port=3306;Initial Catalog=shares;user id=root;password=root;Charset=utf8" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
4.增加Provider
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<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, Version=你的版本号, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
</providers>
</entityFramework>
5.以下为本人部署中遇到的报错以及解决方案,在这里做一个整理
5.1 报错:类型“MySql.Data.MySqlClient.MySqlProviderServices”违反了继承安全性规则。派生类型必须与基类型的安全可访问性匹配或者比基类型的安全可访问性低。
原因:MySql.Data 、MySql.Data.Entity的最新版本(6.10.4)有问题。
解决方案:
安装6.9.10版本,包资源管理器下执行以下语句即可。
PM> Install-Package MySql.Data.Entity -Version 6.9.10
5.2 报错:
No MigrationSqlGenerator found for provider 'MySql.Data.MySqlClient'
原因:mysql 不像sqlserver VS可以自动知道去找MigrationSqlGenerator,而是需要手动指定
解决方案:
需要在Migrations文件夹的Configuration文件中增加红色文本
public Configuration()
{
AutomaticMigrationsEnabled = false;
SetSqlGenerator("MySql.Data.MySqlClient",new MySql.Data.Entity.MySqlMigrationSqlGenerator());
}
5.3 报错:
执行Update-Database提示Specified key was too long; max key length is 767 bytes
解决方案:
在应用名.cs中DbContext类头部加入以下文本
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
版权声明:文中内容大部分收集于网络,转载后个人做补充修正,大家如果还遇到问题可以留言,会在后续更正补充。