EF6 Codefirst+MySql 数据库迁移

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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。