2020-11-18

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

介绍

在本分步指南中,我将解释如何自定义用户实体类,该类可根据您的需要在使用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)。

nuget-package-manager

选择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技术控   获取更多资讯

原文转载:http://www.shaoqun.com/a/490371.html

名人堂是什么:https://www.ikjzd.com/w/1082

epc:https://www.ikjzd.com/w/488

易速:https://www.ikjzd.com/w/2389


介绍在本分步指南中,我将解释如何自定义用户实体类,该类可根据您的需要在使用ABP框架创建的每个Web应用程序中使用。阅读本文时,您将学习如何覆盖内置模块的服务,扩展实体,扩展数据传输对象以及在使用ABP框架开发的应用程序中自定义用户界面。您可以在文章结尾看到下面的屏幕截图。准备项目启动模板和初始运行AbpFramework提供了启动模板,可以更快地投入工作。我们可以使用AbpCLI创建一个新的启动
汇通天下物流:汇通天下物流
史泰博办公用品:史泰博办公用品
清远英德有个蝴蝶谷吗?英德蝴蝶谷好玩吗:清远英德有个蝴蝶谷吗?英德蝴蝶谷好玩吗
厦门博饼民俗园有哪些特色美食啊??:厦门博饼民俗园有哪些特色美食啊??
河南云台山特产:武陟油茶 - :河南云台山特产:武陟油茶 -

No comments:

Post a Comment