如何将自定义属性添加到用户实体

  • A+
所属分类:.NET技术
摘要

在本分步指南中,我将解释如何自定义用户实体类,该类可根据您的需要在使用ABP框架创建的每个Web应用程序中使用。 阅读本文时,您将学习如何覆盖内置模块的服务,扩展实体,扩展数据传输对象以及在使用ABP框架开发的应用程序中自定义用户界面。


介绍

在本分步指南中,我将解释如何自定义用户实体类,该类可根据您的需要在使用ABP框架创建的每个Web应用程序中使用。阅读本文时,您将学习如何覆盖内置模块的服务,扩展实体,扩展数据传输对象以及在使用ABP框架开发的应用程序中自定义用户界面。

您可以在文章结尾看到下面的屏幕截图。

如何将自定义属性添加到用户实体

如何将自定义属性添加到用户实体

准备项目

启动模板和初始运行

Abp Framework提供了启动模板,可以更快地投入工作。我们可以使用Abp CLI创建一个新的启动模板:

abp new CustomizeUserDemo

在本文中,我将介绍MVC应用程序,但它也将在Angular应用程序中工作。

下载完成后,我们可以运行CustomizeUserDemo.DbMigrator项目来创建数据库迁移并植入初始数据(管理员用户,角色等)。然后,我们可以运行CustomizeUserDemo.Web以查看我们的应用程序正在运行。

默认管理员用户名为admin,密码为1q2w3E *

如何将自定义属性添加到用户实体

在本文中,我们将一起研究一个方案,并通过该方案找到问题的解决方案。但是,由于该场景不是现实生活中的场景,因此可能很奇怪,请不要对这个问题太了解?

步骤1

将两个新属性添加到CustomizeUserDemo.Domain项目AppUser的Users文件夹中,如下所示:

public string Title { get; protected set; }  public int Reputation { get; protected set; }

第2步

CustomizeUserDemo.Domain.Shared项目中创建“用户”文件夹,在文件夹中创建类UserConsts,然后更新您创建的类,如下所示:

public static class UserConsts {     public const string TitlePropertyName = "Title";      public const string ReputationPropertyName = "Reputation";      public const int MaxTitleLength = 64;      public const double MaxReputationValue = 1_000;      public const double MinReputationValue = 1; }

第三步

更新EntityFrameworkCore文件夹中CustomizeUserDemo.EntityFramework项目中CustomizeUserDemoEfCoreEntityExtensionMappings类,如下所示:

public static class CustomizeUserDemoEfCoreEntityExtensionMappings {     private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner();      public static void Configure()     {         CustomizeUserDemoGlobalFeatureConfigurator.Configure();         CustomizeUserDemoModuleExtensionConfigurator.Configure();          OneTimeRunner.Run(() =>         {             ObjectExtensionManager.Instance                 .MapEfCoreProperty<IdentityUser, string>(                     nameof(AppUser.Title),                     (entityBuilder, propertyBuilder) =>                     {                         propertyBuilder.IsRequired();                         propertyBuilder.HasMaxLength(UserConsts.MaxTitleLength);                     }                 ).MapEfCoreProperty<IdentityUser, int>(                     nameof(AppUser.Reputation),                     (entityBuilder, propertyBuilder) =>                     {                         propertyBuilder.HasDefaultValue(UserConsts.MinReputationValue);                     }                 );         });     } }

此类可用于将这些额外的属性映射到数据库中的表字段。请阅读文章,以提高你的,我们正在做的事情的理解。

到目前为止,我们已经将额外的功能添加到了User实体中,并将​​这些功能与进行了匹配ef core

现在,我们需要添加迁移,以查看数据库中发生了什么变化。为此,请在菜单工具> NuGet软件包管理器下打开软件包管理器控制台(PMC)。

如何将自定义属性添加到用户实体

选择CustomizeUserDemo.EntityFramework.DbMigrations作为默认项目,并执行以下命令:

Add-Migration "Updated-User-Entity"

如何将自定义属性添加到用户实体

这将MigrationsCustomizeUserDemo.EntityFrameworkCore.DbMigrations项目文件夹内创建一个新的迁移类

如果您使用的是Visual Studio以外的其他IDE,则可以使用此处记录的dotnet-ef工具

最后,运行CustomizeUserDemo.DbMigrator项目以更新数据库。

当我们更新数据库时,您可以看到TitleReputation列已添加到Users表中。

如何将自定义属性添加到用户实体

第四步

CustomizeUserDemoModuleExtensionConfiguratorCustomizeUserDemo.Domain.Shared项目中打开,然后更改ConfigureExtraProperties方法的内容,如下所示:

private static void ConfigureExtraProperties() {     ObjectExtensionManager.Instance.Modules().ConfigureIdentity(identity =>     {         identity.ConfigureUser(user =>         {             user.AddOrUpdateProperty<string>(                 UserConsts.TitlePropertyName,                 options =>                 {                     options.Attributes.Add(new RequiredAttribute());                     options.Attributes.Add(                         new StringLengthAttribute(UserConsts.MaxTitleLength)                     );                 }             );             user.AddOrUpdateProperty<int>(                 UserConsts.ReputationPropertyName,                 options =>                 {                     options.DefaultValue = UserConsts.MinReputationValue;                     options.Attributes.Add(                         new RangeAttribute(UserConsts.MinReputationValue, UserConsts.MaxReputationValue)                     );                 }             );         });     }); }

而已。现在,让我们运行该应用程序,然后查看“身份”用户页面。如果需要,您也可以尝试编辑并重新创建记录,即使我们没有做任何额外的事情,它也将起作用。这是ABP框架背后的魔术代码。

如果需要添加情况,可以单击“贡献”按钮或发表评论。另外,如果您喜欢这篇文章,请不要忘记分享它?

快乐编码?

 

关注公众号:UP技术控   获取更多资讯