Toggle navigation
沐见南的博客
主页
博客
个人作品
关于博主
注册
登录
Toggle cookie consent banner
本站点使用Cookie记录您的信息
详情
接受
连夜升级到了.net core 3.0
沐见南
昨晚一时兴起,打开了尘封已久的Blog站点工程,把框架改成了.net core 3.0,然后按照VS的提示逐个解决了报错,大致还算顺利,夜里三点就洗洗睡了~ 回忆一下,主要遇到两点困难: 1. Oracle自家的Mysql组件实在太垃圾了 不仅仅是一升级dotnet框架就不兼容,而是在其指定的dotnet框架下也是Bug漫天飞……这一点在当时使用AspNetCore 2.2时就深有体会。 这次升级3.0,在一顿瞎操作无果后,我直接拿掉了Oracle出品的两个组件,然后进Nuget搜索Mysql,换了个MS的。 果然,MS做的靠谱多了。 1. Identity.UI下面有个IEmailSender的接口,升级3.0后直接消失了 我从Nuget下载了同命名空间的包,但编译不报错,运行报错。 翻了会儿文档没找到解决办法,无奈删除了相关字段和方法,等后面上了邮件发送系统再说吧。 或者说,干脆别要账号体系了…… **2019年11月28日补充:** 1. EF 迁移的命令行无效 运行直接报命令不存在,真是醉了,错误提示“3.0”和“3.0/Any”不兼容,一脸懵逼。 最终从[这里](https://www.dazhuanlan.com/2019/08/24/5d61124715da9/)找到了解决方案。 1. MySql版本兼容性 本地数据库迁移不成功,MySql报Sql不受支持。 起初,我发现新版EfCore里,实体的DateTime类型会被映射为MySql里的DateTime(6),而以前是DateTime,我以为只是数据类型出了问题,哇靠为什么DateTime会被弄成DateTime(6),2.2版本时还不是这样呢。 由于DateTime(6)不支持以Current_TimeStamp为默认值,手动指定HasColumnType("DateTime")解决问题。 **2019年12月1日补充** 1. EF 生成的迁移修改列名的版本兼容问题 Ef为我生成的更改列名Sql为“Modify Table <TableName> Rename Column <ColumnName_Old> To <ColumnName_New>,本地测试通过,正式环境MySql老是报错。 最后查资料得:[Rename Column 是MySql 8.0 才支持的语法](https://dev.mysql.com/worklog/task/?id=10761)。 我本地是Windows上装的MySql 8.0, 服务器是Linux上装的MySql 5,所以才造成本地一路通畅,服务器处处报错的问题。 两个选择,一是服务器上新版MySql,二是本地EfCore降级。 最终,选择了方案一。 当然,照着套件包的[说明](https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql)在应用里配置一下版本号也是可以的,不过最好正式跟本地环境一致,别给自己添麻烦。
留言板: