NetCore2.2升级到3.1总结
最近公司要求netcore版本从2.2升级到3.1,升级需要修改的配置项和遇到的问题我这边做一个简单的总结。
可参考资料:
https://docs.microsoft.com/zh-cn/ef/core/what-is-new/ef-core-3.x/breaking-changes
netcore3.1 下载:
https://dotnet.microsoft.com/download/dotnet/3.1
升级之后使用VS2019以及以上版本哦
一、 配置项修改
- 1. netcore版本修改为3.1
2. Nuget包升级
(1)删除包: Microsoft.AspNetCore.App
(2)删除包:Microsoft.AspNetCore.Razor.Design
(3)升级包版本:Swashbuckle.AspNetCore 升级到5.0.0及以上
- 3. Program类修改
IWebHostBuilder 修改为IHostBuilder
代码如下:
- 4. Startup类修改:
(1) IHostingEnvironment修改为IWebHostEnvironment
(2) ConfigureServices方法返回结果由IServiceProvider修改为void
(3) services.AddMvc()修改为 services.AddControllers().AddNewtonsoftJson()
注意:方法名结尾的async会自动取消。
比如:定义的方法名为SearchMemberAsync(),但是在请求方法SearchMemberAsync时提示没有此方法 ,请求SearchMember方法时却请求成功
为了方法名结尾不取消async,配置SuppressAsyncSuffixInActionNames参数为false。
代码如下:
(4) swagger配置修改:
代码如下:
(5) return services.AddDynamicEF 删除return
(6) app.UseMvc修改为app.UseEndpoints
代码如下:
(7) 删除app.UseDeveloperExceptionPage();
添加app.UseRouting();
5. 视图:由以前的DbQuery修改为 DbSet
并添加以下配置:
代码如下:
6. Map映射问题
使用映射必须在数据源或者映射源上面标记AutoMap特性
7. 表名列名转换写法变化
- 8. 枚举DisplayName特征的获取
由[DisplayName(" ")]特征 修改为[Display(Name=" ")]
二、 遇到的问题
1.
报错提示:
2. GroupBy写法问题:
GroupBy在分组之后没有使用select指定查询的列,就会报错。因为此写法法生成不了sql语句。
3. 语句中使用了判断表字段是否是非空使用了IsEmpty
参照以下写法是可以生成sql语句的:
https://www.cnblogs.com/yaoxiaodan/p/15263204.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)