• NetCore2.2升级到3.1总结


    最近公司要求netcore版本从2.2升级到3.1,升级需要修改的配置项和遇到的问题我这边做一个简单的总结。 

    可参考资料:

    https://docs.microsoft.com/zh-cn/aspnet/core/migration/22-to-30?view=aspnetcore-5.0&tabs=visual-studio

    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. 1.       netcore版本修改为3.1  

          

    2.       Nuget包升级

             (1)删除包:   Microsoft.AspNetCore.App

        (2)删除包:Microsoft.AspNetCore.Razor.Design

        (3)升级包版本:Swashbuckle.AspNetCore 升级到5.0.0及以上

    1. 3.      Program类修改

     IWebHostBuilder 修改为IHostBuilder  

     代码如下: 

     View Code
    1. 4.       Startup类修改: 

      (1)  IHostingEnvironment修改为IWebHostEnvironment      

        

           

        (2)  ConfigureServices方法返回结果由IServiceProvider修改为void 

        

         (3)  services.AddMvc()修改为  services.AddControllers().AddNewtonsoftJson()  

        

        注意:方法名结尾的async会自动取消。

       比如:定义的方法名为SearchMemberAsync(),但是在请求方法SearchMemberAsync时提示没有此方法 ,请求SearchMember方法时却请求成功 

       为了方法名结尾不取消async,配置SuppressAsyncSuffixInActionNames参数为false。

     

      代码如下:

     View Code

      

        (4)  swagger配置修改:    

          

           

     代码如下:  

     View Code

      

    (5) return services.AddDynamicEF 删除return    

          

         (6) app.UseMvc修改为app.UseEndpoints 

          

      代码如下:  

     View Code

    (7)  删除app.UseDeveloperExceptionPage();

      添加app.UseRouting();

     5.       视图:由以前的DbQuery修改为 DbSet     

         

            并添加以下配置: 

         

      代码如下: 

     View Code

       

    6.       Map映射问题

            使用映射必须在数据源或者映射源上面标记AutoMap特性

         

         

         

    7.        表名列名转换写法变化   

         

    1. 8.       枚举DisplayName特征的获取 

       由[DisplayName(" ")]特征 修改为[Display(Name=" ")]         

         

                

          

    二、    遇到的问题 

            1.                  

         

        报错提示:  

        

    2.           GroupBy写法问题:

                 GroupBy在分组之后没有使用select指定查询的列,就会报错。因为此写法法生成不了sql语句。           

    3.           语句中使用了判断表字段是否是非空使用了IsEmpty        

         

       

     参照以下写法是可以生成sql语句的:  

         

     https://www.cnblogs.com/yaoxiaodan/p/15263204.html

  • 相关阅读:
    7天入门JavaScript,第一天
    linux 下 启动web项目报 java.net.UnknownHostException
    HashMap 和 Hashtable
    Servlet 两种跳转方式
    SpringMVC
    把当前时间(NSDate)转为字符串
    写入数据到Plist文件中时,第一次要创建一个空的数组,否则写入文件失败
    实现多个UIView之间切换的动画效果
    missing required architecture x86_64 in file 不支持64位
    获取IOS bundle中的文件
  • 原文地址:https://www.cnblogs.com/wl-blog/p/15292387.html
Copyright © 2020-2023  润新知