Abp vNext 扩展属性

news/2025/1/5 15:08:45/文章来源:https://www.cnblogs.com/WangJunZzz/p/18643583

扩展属性

  • 我们发现abp的默认都会有一个ExtraProperties属性,那么他的作用是什么呢?当我们使用abp的时候,需要对其原有的表进行扩展或者添加我们想要的字段,又不想改源码,以最小的方式实现,这个时候就体现它的价值了。
  • 我们添加的数据都会在ExtraProperties以JSON对象方式进行存储。

如何添加

  • 在Domain.Shared层中提供了一个xxxModuleExtensionConfigurator类

示例

  • 给AbpUser表扩展一个用户头像地址的属性
 public static class JuiceModuleExtensionConfigurator{private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner();public static void Configure(){OneTimeRunner.Run(() =>{ConfigureExistingProperties();ConfigureExtraProperties();});}private static void ConfigureExtraProperties(){ObjectExtensionManager.Instance.Modules().ConfigureIdentity(identity =>{identity.ConfigureUser(user =>{user.AddOrUpdateProperty<string>( //property type: string"AvatarUrl",property =>{property.Attributes.Add( new StringLengthAttribute(128)); // 最大长度为28// ...property.Attributes.Add( new RequiredAttribute()); 还有很多特性直接可以使用});});});}}
  • 如何写入或者更新到数据库
private readonly IdentityUserManager _userManager;
public TestAppService(IdentityUserManager userManager)
{_userManager = userManager;
}
public async Task AddUserAsync()
{var user = new IdentityUser(GuidGenerator.Create(), "test-user", "test@qq.com");user.ExtraProperties["AvatarUrl"] = "test-avatar-url";await _userManager.CreateAsync(user);
}
  • 效果

疑问?

  • 这个数据是一个json格式保存在数据库的扩展字段的?假如我的场景是要加索引呢?这个时候这种方式就不行了?

  • 映射成数据库字段列

    • 在EntityFrameworkCore层的xxxEfCoreEntityExtensionMappings下集成一下代码
public static class JuiceEfCoreEntityExtensionMappings
{private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner();public static void Configure(){JuiceGlobalFeatureConfigurator.Configure();JuiceModuleExtensionConfigurator.Configure();OneTimeRunner.Run(() =>{ObjectExtensionManager.Instance.MapEfCoreProperty<IdentityUser, string>("AvatarUrl",(entityBuilder, propertyBuilder) =>{propertyBuilder.HasMaxLength(128);});});}
}
  • 执行ef core迁移
dotnet ef migrations addAvatarUrl
dotnet database update
  • 效果

  • 如何通过代码新增和编辑方式还是通过扩展字段操作和之前保持一致。

注意

  • AutoMapper的时候记得需要mapper扩展属性(MapExtraProperties),如下:
public class AbpIdentityApplicationModuleAutoMapperProfile : Profile
{public AbpIdentityApplicationModuleAutoMapperProfile(){CreateMap<IdentityUser, IdentityUserDto>().MapExtraProperties();CreateMap<IdentityRole, IdentityRoleDto>().MapExtraProperties();}
}
  • 我们自写自己的模块的时候,应该也支持ExtraProperties,这样灵活性会更好。

ABP vNext Pro

  • AbpPro Vben5 Antd Vue版本预览
  • AbpPro Vben5 Antd Element Plus Vue版本预览
  • AbpPro Vben5 Antd Naive UI Vue版本预览
  • 文档地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/861813.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DL00230-基于Transformer的高光谱解混完整实现python

完整链接: https://item.taobao.com/item.htm?ft=t&id=794567466608&spm=a21dvs.23580594.0.0.3bc12c1bIJwjmP

WinCC动态修改画面窗口变量前缀

include"apdefao.h" void OnLButtonDown(char* lpszPictureName,char* lpszObjectName,char* lpszPropertyName) { setPropBOOL(lps) }

低代码必备:90%的企业都在使用的9款项目管理软件

引言 在数字化转型的浪潮中,低代码技术逐渐成为企业提升项目管理效率的重要工具。这9款项目管理软件涵盖了不同类型的工具,包括传统的项目管理软件、新兴的云平台以及行业特定的解决方案。它们在企业的项目管理中发挥着关键作用,为企业带来了更高的效率、更灵活的业务流程以…

【数字化转型】 IT如何做规划?

IT部门规划1. IT未来的愿景是什么? 2. 如何构建架构蓝图? 3. IT部门应该怎么规划?4. XD历次IT规划实例IT规划是基于公司战略来制定的,而企业架构衔接战略与项目实施落地的桥梁——承载IT的战略,指导IT实施。那么,到底应该怎么做IT规划,IT规划与企业架构之间应该如何关联…

4.4圆角边框

圆形边框实现图片居中

DVWA靶场Command Injection(命令注入) 漏洞low(低),medium(中等),high(高)所有级别通关教程及源码审计

命令注入 命令注入漏洞是一种安全漏洞,攻击者可以通过向应用程序输入恶意命令,诱使系统执行这些命令,从而达到未授权访问、数据篡改、系统控制等目的。该漏洞通常出现在应用程序未对用户输入进行充分验证和清理时 常见管道符: ; 前面的执行完执行后面的 | 上一条命…

车身舒适系统HIL仿真测试解决方案

车身舒适控制系统是指为驾驶人员提供舒适性控制的装置,伴随着车身舒适系统日益复杂化,系统级的自动测试手段对于保证现今复杂车身舒适系统的功能稳定性验证非常重要,经纬恒润基于HIRAIN TESTBASE平台开发的车身舒适系统测试系统,针对车身舒适域的电控单元实现了在实验室条件…

【数据清洗秘籍】如何避免Pandas中的科学计数法陷阱

在数据分析的世界里,数据清洗是一项不可或缺的工作。我们经常需要将数据从一种格式转换为另一种格式,以适应分析的需求。然而,在处理数值数据时,一个常见的问题就是数值被自动转换为科学计数法,尤其是当数值非常大时。这不仅影响了数据的可读性,还可能对后续的分析造成影…

线性化注意力综述:突破Softmax二次复杂度瓶颈的高效计算方案

大型语言模型在各个领域都展现出了卓越的性能,但其核心组件之一——softmax注意力机制在计算资源消耗方面存在显著局限性。本文将深入探讨如何通过替代方案实现线性时间复杂度,从而突破这一计算瓶颈。注意力机制基础理论 本文假设读者已经熟悉ChatGPT、Claude等模型及其底层的…

shadcn 表格有间距,然后给某一行加边框显示不出来,用div覆盖

`pointer-events-none` 到边框 `div` 上,以确保它不会干扰用户与表格的交互。 {isToday && ( <div className="absolute inset-0 border-2 border-yellow-400 pointer-events-none" /> )}

[241230]相较于NSAID和csD, TNFi显著降低axSpA髋和脊柱的骨折风险

该研究最早展示于ACR2024年会, 目前已提前在线发表于ACR官刊A&RDriscoll D, et al. Association of Therapies for Axial Spondyloarthritis on the Risk of Hip and Spine Fractures. Arthritis Rheumatol. 2024 Dec 16. https://pubmed.ncbi.nlm.nih.gov/39679763/ ◀

激活navicat 15

虽然我激活了DataGrip ,但是我还是习惯用 navicat ,所以打算重新激活一下 这个激活流程就稍微复杂一些 首先下载这些工具navicat15下载:官网下载:http://download.navicat.com.cn/download/navicat150_premium_cs_x64.exe云盘下载:https://wwe.lanzoum.com/iCYQ900vdntc 密…