之前一直想用 mysql 和 ef 。然后多次尝试也只能感叹 还是 sqlsever 是亲儿子。

今天在单位又尝试了一次,然后就成功了,记录一下遇到的问题。

首先是安装包和驱动?。

请保证 MySql.Data / MySql.Data.Entity.EF6 / mysql Connector/NET 版本对应一致

2019.03  我使用的版本是· 6.10.8

Connector/NET 下载地址: https://dev.mysql.com/downloads/connector/net/6.8.html

连接串:

  <connectionStrings>
<add name="xxx" connectionString="Server=localhost;Database=bugbus;User=root;Password=;charset=utf8" providerName="MySql.Data.MySqlClient" />
</connectionStrings>

安装完后 EF的配置会自动添加 可以确认一下:

标红的这一段要手动加。databaseInitializer是初始化的类绑定。

 1   <entityFramework>
2 <contexts>
3 <context type="DB.AppContext,DB">
4 <databaseInitializer type="DB.Initializer,DB"></databaseInitializer>
5 </context>
6 </contexts>
<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=6.10.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</providers>
</entityFramework>

然后运行就是是两个异常

Specified key was too long; max key length is 767 bytes。

Model compatibility cannot be checked because the database does not contain。

这两个异常花了我好久时间查来查去,各种千奇百怪的解决方案。

最后发现 https://www.cnblogs.com/Linner/p/6297223.html 的解决方法简单的解决了问题

  [DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class AppContext : DbContext
{
static AppContext()
{
DbConfiguration.SetConfiguration(new MySql.Data.Entity.MySqlEFConfiguration());
} public AppContext() : base("xxxxxx")
{ } public DbSet<System.User> Users { get; set; } }

C# EF 与 MySql 的那些坑的更多相关文章

  1. 一步到位Linux中安装配置MySQL及补坑

    Windows上安装MySQL也就不讲了,基本上一路点击下一步就可完成,现在讲讲Linux上布署Mysql,虽然也有很多网友列出了详细的步骤,可能是因为版本过老的问题导致即使按照上面一步步来也还是出现 ...

  2. 如何用VS EF连接 Mysql,以及执行SQL语句 和存储过程?

    VS2013, MySQL5.7.18 , MySQL5.7.14 执行SQL语句: ztp_user z = new ztp_user(); object[] obj = new object[] ...

  3. EF 连接MySQL 数据库  保存中文数据后乱码问题

    EF 连接MySQL 数据库  保存中文数据后乱码问题 采用Code First 生成的数据库,MySQL数据库中,生成的表的编码格式为***** 发现这个问题后,全部手动改成UTF8(图是另一个表的 ...

  4. EF连接mysql数据库生成实体模型

    声明:本人也是第一次用EF连接mysql生成实体模型 经过试验: mysql-connector-net-6.6.6 可以支持VS2012 mysql-connector-net-6.3.9 可以支持 ...

  5. EF初始化mysql数据库codefirst

    EF使用Code First修改生成数据库表名的方法 1. 重写OnModelCreating,去掉表名复数 System.Data.Entity.ModelConfiguration.Convent ...

  6. EF连接MySQL数据Web.Config配置

    EF连接MySQL数据Web.Config配置 <?xml version="1.0" encoding="utf-8"?> <configu ...

  7. ASP.NET MVC5+EF6+EasyUI 后台管理系统(91)-EF 连接 MySql

    前言 虽然系统目前只支持MSSQL版本,但是很多朋友公司技术规定必须使用MySql,下面我们就来使用EF连接MySQL吧! (1)安装MYSQL环境 1.下载安装MYSQL数据,这里我们安装phpSt ...

  8. EF Core MYSQL 生成表映射配置问题

    Model表 public class Goods { public string ID { get; set; } public string CreatedBy { get; set; } pub ...

  9. EF连接MySql数据库

    Windows要想EF连接MySql,首先要安装两个应用程序 mysql-connector-net-6.8.8.msimysql-for-visualstudio-1.2.7.msi 项目还需要两个 ...

随机推荐

  1. mysql基本命令[转]

    1.连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root ...

  2. kindle转换工具-calibre

    kindle转换工具  calibre https://calibre-ebook.com/download_windows

  3. Linux内存管理--物理内存分配【转】

    转自:http://blog.csdn.net/myarrow/article/details/8682819 1. First Fit分配器 First Fit分配器是最基本的内存分配器,它使用bi ...

  4. 如何设置使eclipse修改代码不重启tomcat

    tomcat配置 1.server.xml reloadable="true"<Context docBase="ins" path="/ins ...

  5. 005_git专题

    一.仓库管理 ➜ gittest git:(master) git config --local user.name "arunguang" ➜ gittest git:(mast ...

  6. Ext需要的文件目录

    使用ext版本信息:ext-4.1.1a <!-- 下面是引入文件需要导入的文件信息 ext-all.css ext-all.js --><link rel="styles ...

  7. 求阶乘的和(for循环)

    第二种方法:

  8. Java基础99 待续

    1.待续 原创作者:DSHORE 作者主页:http://www.cnblogs.com/dshore123/ 原文出自:https://www.cnblogs.com/dshore123/p/107 ...

  9. C++ code:数值计算之辛普生(Simpson)法求解积分问题

  10. cf1108e 线段树区间更新+扫描线

    /* 有点像扫描线 思路:从左到右枚举每个点,枚举到点i时,把所有以i为起点的区间的影响删去 再加上以i-1为结尾的区间的影响 */ #include<bits/stdc++.h> usi ...