- 简介
- 项目使用MSSql作为数据库,但是因为SQL服务器贵那么一点,并发连接差那么一点,要把数据迁移到MySQL,顺带迁移过程以及问题。
- 环境
- Visual Studio 2013
- MySQL 5.7
- Entity Framework 6.1.3
- 正文
- 迁移过程
- 安装MySQL,顺带安装 MySQL for Visual Studio、MySQL Connector Net
- 在Entity Framework 项目和 WebSite项目中添加Nuget包,MySql.Data.Entity,我这里添加的是6.9.6版本,添加时后会把MySQL.Data作为依赖项加入到项目中,完成后可以看到web.config和app.config下增加了MySQL的 provider和DbProvideFactories。
- 修改Web.config的连接字符串,providerName修改成:MySql.Data.MySqlClient。
- 回到EntityFramework项目中,找到DbContext类,为类添加属性:[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
- OK,这些工作做完,基本就可以了,打开程序包管理器控制台,虔诚祈祷,然后输入:update-database
- 迁移问题
- 未将对象引用设置到对象的实例。
- 问题描述:这是一个比较通用的错误提示,很多Error都会提示这个,网上找了一些不太对,最后发现是因为启动项设置为EF项目,同时默认项目也是EF项目,因为在config文件中不到连接字符串导致的。
- 解决方案:在EF的app.config中添加连接串,或者启动项目设置为WebSite。
- 问题描述:字面意思就是说,provider不支持类型”nvarchar(max)”,这与MySQL数据库支持的数据类型有关系。
- 解决方案:找一下Entity定义中是不是有string类型,添加 属性如: [StringLength(1000)],然后问题解决。