打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
将SQL SERVER数据库改成MySql

格斗人网 (www.helpqy.com) 架构在阿里云上,最先想采用SQL SERVER,想大家都是微软家族的嘛。但是发现SQL SERVER需要的配置比较高,需要的银子也比较多,最后在纠结之下换成了MySql。由于整个网站基于微软的asp.net MVC架构,同时基于EF6.0,而MVC架构默认采用了SQL SERVER,这里又与code first混合在一起,所以在修改和过渡过程中还是遇到了不少问题。这个过程中参考了博客园不少前辈的文章,真是太感谢了。其中主要参考的一篇外文是:“ASP.NET Identity: Using MySQL Storage with an EntityFramework MySQL Provider (C#)”。时间太长了,现在在总结和回忆,可能还是会遗漏掉一些细节,请各位,也请我自己谅解哈,嘿嘿。

 

1. 通过NuGet下载Mysql的provider,以便EF能够连接Mysql数据库。下载MySql.Data.Entity包时,会有两个包被集成进工程,如下所示:

 

2. 然后是Web.config的修改。

    在connectionStrings中去掉SQL SERVER相关的连接字符串,加入mysql的连接字符串,如下所示:

    在providers中加入mysql的provider信息:

    在system.data中加入mysql的factory信息:

 

3. 加入定制化的MigrationHistory context。这一节非常重要,重点参考了上述的那篇美文。

    EF的Code First采用Migration History表来保证model和数据库的一致性。但是数据库换成Mysql后默认的主键长度超过了Mysql最大允许的767字节,所以必须修改主键长度,这里需要修改HistoryContext,可以新增加一个类来继承HistoryContext,如下所示:

    为了让EF使用修改后的HistoryContext,而不使用默认的HistoryContext,则需要增加类修改DbConfiguration:

 

4. MySql provider无法直接支持EF的migration和code first,需要增加一个定制化的EF initializer:

    同时需要在DbContext中使用此定制化的initializer:

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
PowerDesigner中如何生成主键和自增列--SQL SERVER版本 - NetS...
[PowerDesign]将数据库从SQL Server数据库转换为MySQL
DB-Engines:关系型数据库的争霸赛
用DAO连接SQL SERVER数据库
Entity Framework
mysql 利用bat文件导入导出sql文件
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服