3

abp(net core)+easyui+efcore实现仓储管理系统——ABP升级7.3上(五十八) - DotNet菜园

 1 year ago
source link: https://www.cnblogs.com/chillsrc/p/17258437.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Abp(net core)+easyui+efcore实现仓储管理系统目录

 一、简介

       微软从.NET 5开始进行.NET 统一计划,.NET 5是继3.1之后.NET Core的下一个主要版本。微软从名称中删除了“Core”,是为了强调这是 .NET未来的主要实现。与 .NET Core 或 .NET Framework 相比,.NET 5 会支持类型更多的应用和平台。.NET 5不会替换 .NET Framework。

       .NET 6 提供 .NET 统一计划的最终部分,该计划在 .NET 5中启动。 .NET 6在移动、桌面、IoT 和云应用之间统一了SDK、基础库和运行时。除了这方面的统一以外,.NET 6 生态系统还提供了以下功能:

       简化开发:轻松入门。 C# 10 中的新语言功能可减少需要编写的代码量。 利用 Web 堆栈和最小 API 的投资,可以轻松地快速编写更小、更快速的微服务。

       更佳的性能:.NET 6 是最快的完整堆栈 Web 框架,如果在云中运行,则会降低计算成本。

       终极工作效率:.Net 6 和 Visual Studio 2022 提供热重载、新的 git 工具、智能代码编辑、可靠的诊断和测试工具以及更好的团队协作。

        .NET 7已经在2022年11月发布了,.NET8已经在路上了,预计将在今年的11月份发布。.NET小步快走,每年都在进步。

        从2019年5月至2020年12月,花了一年半时间写了abp(net core)+easyui+efcore实现仓储管理系统系列文章。本系列是介绍基于ABP+EasyUI的Web开发框架的实现一个仓储管理系统的实例,主要包括一些ABP的介绍,ASP.NET MVC Core技术、EasyUI技术、JQuery技术、WebAPI 技术,以及一些我对整体框架改造的基础性东西,力求更加稳定、通用、高效、简洁,用最少的代码做尽可能多的事情。当时我所使用的ABP版本是4.3,是基于ASP.NET CORE 2.X的版本。

        2年时间过去了,ASP.NTE CORE 2.x微软已经不在对其进行支持,已经结束了支持周期。我准备将ABP升级到7.3,这是基于NET6的一个版本,NET6是一个长期支持版本,其支持周期结束时间在2024年11月份。easyui升级到1.10.12。

       做为IT从业人员,我们在不同的公司或相同的公司基于不同的需求创建着各种应用,这些应用都有一些通用和相似的结构。这些通用的结构包括授权,验证,异常处理,日志,本地化,数据库连接管理,设置管理,审计日志等。

       我们在创建与实现各种应用时,都会试着应用各种新的最佳实践,比如分层和模块化架构,领域驱动设计(DDD),依赖注入等等。

       ABP是一个开源的且文档友好的应用框架,它不仅仅是一个框架,更提供了一个基于DDD和最佳实践的健壮的体系模型。

        接下来我们进行升级,在浏览器中输入https://aspnetboilerplate.com/Templates。然后依次按下图选择,输入验证码,之后点击“create my project”按钮。下载项目模板。

 

10343-20230326121331619-644522389.png

        至于你是用新的项目模板替换旧的项目模板,还是将项目中的代码文件拷贝到新的项目中,这个就由你自己决定了。

 二、升级过程遇到的问题

      接下来介绍一下升级过程中遇到的问题。

          第一个问题,原来代码中我们使用的ABP基类提供的GetAll()、Create()、Update()此类方法 ,在ABP7.3中都已经不提供了,现在ABP7.3中提供的是异步方法,在以上方法上加上Async后缀。即GetAll()变为了GetAllAsync、Create()变为了CreateAsync、Update()变为了UpdateAsync。

           第二个问题,用Visual Studio 2022打开了我们的ABP.TPLMS项目,在解决方案资源管理器中,将ABP.TPLMS.WEB.MVC项目设置为启动项目,按F5启动,浏览器中呈现的登录页面没有样式。如下图。整个登录界面在页面的左上角,不在页面的正中间,而且没有css。

10343-20230326121408263-303897096.png

         这是由于ABP的客户端库,需要我们自己进行还原。在Visual Studio 2022的解决方案资源管理器中,找到ABP.TPLMS.WEB.MVC项目,在这个项目中有一个libman.json文件。

         使用鼠标左键选中这个文件,然后单击鼠标右键,在弹出菜单中选择“还原客户端库”,如下图。在这个还原过程中,需要一直保持网络畅通。请对照此文件中的内容,查看wwwroot\libs目录下的所还原的客户端库是否完整。如果不完整,请再次进行还原。

 

10343-20230326121454866-846034132.png

        客户端库还原成功之后,在Visual Studio 2022的解决方案资源管理器中,将ABP.TPLMS.WEB.MVC项目设置为启动项目,按F5键运行项目,浏览器中呈现的登录页面如下图。

10343-20230326121529384-299369007.png

        第三个问题:AutoMapper 9版本之后取消了静态方法,所以造成了以下错误。

 

10343-20230326121609913-2099765828.png

         我首先想到的解决方法就是注入,将IMapper注入到这个类中,于是我在Visual Studio 2022 的解决方案资源管理器中,找到ABP.TPLMS.Application项目中的Modules文件夹中的ModuleAppService.cs文件,修改了ModuleAppService的构造方法 ,将IMapper注入。将代码中原来的Mapper.Map都修改为m_map.Map。编译是通过了,但是在后续的升级过程中却遇到了另外的一个问题,一个错误,这个问题在后续来解决。先按编译通过的方式来修改代码,具体代码如下:

public class ModuleAppService : ApplicationService, IModuleAppService
    {

        private readonly IRepository<Module> _moduleRepository;

        AutoMapper.IMapper m_map; 

        public ModuleAppService(IRepository<Module> moduleRepository, IMapper map)
        {

            _moduleRepository = moduleRepository;

            m_map = map;

        }

}

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK