介紹
在本分步指南中,我將解釋如何自定義用戶物體類,該類可根據您的需要在使用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 =https://www.cnblogs.com/lyl6796910/archive/2020/11/18/ 1_000; public const double MinReputationValue = https://www.cnblogs.com/lyl6796910/archive/2020/11/18/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"

這將Migrations在CustomizeUserDemo.EntityFrameworkCore.DbMigrations專案的檔案夾內創建一個新的遷移類,
如果您使用的是Visual Studio以外的其他IDE,則可以使用此處記錄的
dotnet-ef工具,
最后,運行CustomizeUserDemo.DbMigrator專案以更新資料庫,
當我們更新資料庫時,您可以看到Title和Reputation列已添加到Users表中,

第四步
CustomizeUserDemoModuleExtensionConfigurator在CustomizeUserDemo.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技術控 獲取更多資訊
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/223866.html
標籤:.NET技术
上一篇:簡單串口接收資料拋例外
