当前位置: 首页 > 编程语言 > C#

在ASP.Net Identity 2.0上包含属性UserManager.Users.ToListAsync和UserManager.FindByIdAsync分享

时间:2023-04-10 23:47:18 C#

C#学习教程:在ASP.NetIdentity2.0上包含属性UserManager.Users.ToListAsync和UserManager.FindByIdAsync网络身份2.0。到目前为止,我在这个博客的帮助下做得很好。但我的道路略有不同。我希望一些数据不属于用户对象,而是新创建的客户对象。我想将身份验证和授权数据与我的业务数据分开。因此,就我而言,我通过添加客户属性修改了ApplicationUser类:publicCustomerCustomer{get;放;}客户类看起来像这样:publicclassCustomer{publicintId{get;放;}publicstringFirstName}publicstringLastName{get;放;}公共字符串插入{get;放;}公共性别性别{得到;放;}publicDateTime生日{get;放;}...ETC。公共虚拟ApplicationUser用户{得到;放;我还在ApplicationDbContext中添加了关系:base.OnModelCreating(模型构建器);所以现在在对注册视图模型和控制器进行一些修改后,我可以注册为用户,用户记录在AspNetUsers表中创建,客户记录在Customer表中创建,并引用用户记录。到目前为止,一切都很好。但是现在,当我出于显示目的检索用户时,Customer属性为空。这是有道理的,因为未加载基础记录。通常我会使用.Include关键字来加载相关记录。但是当我使用Asp.Netidentity2.0自带的默认UserManager时,我不知道该怎么办。有谁知道如何实现这一目标?我找到了答案。Probablu在回答之前需要更多搜索。答案是基于这个SO问题的答案我添加了一个名为ApplicationUserStore的类。publicclassApplicationUserStore:UserStore{publicApplicationUserStore(DbContextcontext):base(context){}publicoverrideSystem.Threading.Tasks.TaskFindByIdAsync(stringuserId){returnUsers.Include(u=>u.Customer).Include(u=>u.Roles).Include(u=>u.Claims).Include(u=>u.Logins).FirstOrDefaultAsync(u=>u.Id==userId);在此类中,我重写了AddedFindByIdAsync以包含客户记录。然后我更改了IdentityConfig.cs中Create方法中的第一行,它返回ApplicationUserManager,以便它传递新创建的ApplicationUserStore而不是UserStore。varmanager=newApplicationUserManager(newApplicationUserStore(context.Get()));我可能还必须覆盖其他一些获取方法以包含客户记录。以上就是C#学习教程:ASP.NetIdentity2.0包含了属性UserManager.Users.ToListAsync和UserManager.FindByIdAsync所共有的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: