新增功能概述
•启动模板删除 EntityFrameworkCore.DbMigrations
项目•CMS-Kit 模块新增 动态菜单管理 功能•对象扩展管理系统新增两个扩展方法:MapEfCoreDbContext
MapEfCoreEntity
,分别对 数据上下文和实体 自定义映射配置。•文本模板系统新增 Razor 模板引擎 支持。•ABP CLI 新增3个命令:abp install-libs
abp prompt
abp batch
。
关注 ABP Framework 最新开发进度,后面还会陆续发布新功能详解、新功能示例等系列文章,敬请关注! ABP Framework 研习社(QQ群:726299208) 专注 ABP Framework 学习,经验分享、问题讨论、示例源码、电子书共享,欢迎加入!
启动模板删除 EntityFrameworkCore.DbMigrations
项目
在这个版本中,对应用程序的启动解决方案模板做了一个重要改变:
原模板解决方案包含 EntityFrameworkCore.DbMigrations
项目,该项目中包含 单独的DbContext类,负责数据库迁移。
在v4.4
版本中,我们决定从解决方案中删除了这个项目。在新的解决方案结构中,将 EntityFrameworkCore
项目用于数据库迁移。
除了使 DbContext
统一外,使用了新的ReplaceDbContext
属性,替换了IIdentityDbContext
和ITenantManagementDbContext
接口,以使这些模块能够轻松地对仓储进行连接查询。
CMS-Kit 动态菜单管理
CMS Kit是一系列可重用 CMS 系统功能模块。当前版本添加新功能:动态添加菜单,可以导航到任何页面或Url。
CMS Kit 管理页面 /Menus
进行菜单管理。
发布网站显示菜单
截图使用的是 ABP Commercial 版本,此功能同时包含在 ABP Framework CMS Kit 应用模块中(主题不同)。
Razor引擎对文本模板的支持
文本模板[1]是通过使用模型(数据)和模板在运行时生成内容的系统。它是在Scriban[2]模板引擎上运行的。从这个版本开始,模板引擎我们有了第二个选择:可以使用熟悉的 razor 语法来构建和渲染模板。参见文本模板Razor集成[3]文档,开始使用新的引擎。
DbContext/Entities 新的定制点
ObjectExtensionManager.Instance
中增加了两个新的扩展方法: MapEfCoreEntity
MapEfCoreDbContext
,以重写预建应用模块[4]的 EF Core 映射。
示例:更改 IdentityDbContext
的映射以重写 IdentityUser
实体的映射
ObjectExtensionManager.Instance.MapEfCoreDbContext<IdentityDbContext>(modelBuilder =>
{modelBuilder.Entity<IdentityUser>(b =>{b.ToTable("MyUsers");b.Property(x => x.Email).HasMaxLength(300);});
});
启动模板包含 YourProjectNameEfCoreEntityExtensionMappings
类,用来添加上述代码。
ABP CLI 新命令
ABP CLI在v4.4
引入新命令:
•abp install-libs
命令用于 MVC/Razor Pages和 Blazor Server 应用程序,用于恢复 wwwroot/libs
文件夹。之前我们是通过运行 yarn
和 gulp
命令来恢复该文件夹。虽然 install-libs
命令仍然使用 yarn
(如果有的话,如果没有呢?),但不再需要使用 gulp
了。•abp prompt
命令可以用来打开 ABP CLI 的提示,并运行多个命令,而不需要每次都指定 abp 命令。例如,如果你运行abp prompt
,那么你可以直接运行install-libs
而不是abp install-libs
。使用exit
来从 ABP提示符 中退出。•abp batch
命令可用于用一个命令运行多个ABP命令。准备一个文本文件,将每个命令写成一行(没有abp
命令前缀),然后执行abp batch <batch-file>
,比如:abp batch your_commands.txt
命令来执行该文件中的所有命令。
新增 appsettings.secrets.json 配置文件
在启动模板中添加了 appsettings.secrets.json
配置文件,用来保护你的敏感/机密配置信息。在源码控制中忽略这个文件(如果你使用git,通过添加到.gitignore
),并且只在开发和部署环境中保留它。
ABP Framework 其他改进
•#9350
提取了IRemoteServiceConfigurationProvider
以获得远程服务配置。可以替换该服务实现从任何来源获得配置。•#8829
为分布式事件总线实现了错误处理和重试。 #9288
在启动模板中使用默认的CORS策略,而不是一个命名策略。建议更新自己的方案,使之更简单。•框架和模块的本地化提供:印度语、意大利语、芬兰语、法语和斯洛伐克语。
除此以外,还有很多改进和错误修复。请参阅4.4-预览里程碑[5],了解该版本修复的所有问题和合并的推送。
项目中需要用到工作流,可以看看这篇文章:《基于 ABP Framework 使用 Elsa 工作流》[6]
发布免费电子书:《Implementing Domain Driven Design》
六月初,为ABP社区出版了一本免费电子书。这是一本实施领域驱动设计(DDD)的实用指南。
中文版已翻译完成,为了大家方便阅读,整理成了电子书 《基于ABP Framework 实现领域驱动设计》中文完整版_v1.0_iEricLee译
请入群:ABP Framework 研习社(QQ群:726299208)在共享文件中下载。
新主题预告:LeptonX Theme
即将发布新主题,命名为LeptonX。该主题适用于 ABP Framework(免费精简版)和 ABP Commercial(商业专业版)。大概要等几周发布第一个版本。
重点介绍免费精简版 LeptonX-lite
,将包含专业版所具有的大部分基本功能和组件。
精简版和专业版之间的一些区别:
•导航栏:移动标签导航栏只在专业版提供。在精简版中,用一个汉堡包菜单替换。•页面布局:精简版将只发布侧面菜单布局,未来可能发布更多的布局,因为基础设施可使开发和替换布局变得容易。•主题颜色:在专业版提供不同颜色选项和在运行时改变颜色的能力。精简版使用暗色构建。
详细信息参看介绍文档[7]
关于下一版本
下一个主要版本:5.0
,将基于 .NET 6.0 ,预计在2021年底发布。计划将在RC版本之前发布多个预览/Beta版本。有关5.0
版本的计划细节,请参见路线图[8]。
References
[1]
文本模板: https://docs.abp.io/en/abp/4.4/Text-Templating[2]
Scriban: https://github.com/scriban/scriban[3]
Razor集成: https://docs.abp.io/en/abp/4.4/Text-Templating-Razor[4]
预建应用模块: https://docs.abp.io/en/abp/latest/Modules/Index[5]
4.4-预览里程碑: https://github.com/abpframework/abp/milestone/52?closed=1[6]
《基于 ABP Framework 使用 Elsa 工作流》: https://community.abp.io/articles/using-elsa-workflow-with-the-abp-framework-773siqi9[7]
介绍文档: https://volosoft.com/blog/introducing-the-lepton-theme-next-generation[8]
路线图: https://docs.abp.io/en/abp/latest/Road-Map