我曾经使用 ASP NET Identity 开发 ASP.NET 网站。使用它,我有了这个 UserManager:
UserManager<TUser, TKey>
。这样,我可以将 TKey
用作 int
,因为我的数据库表使用 int
身份字段。所以,我可以做这样的事情:_userManager.FindByIdAsync(1);
。该指令返回身份为 1 的用户。
使用 .NET Core,我可以这样创建自己的
ApplicationUser
:
public class ApplicationUser : IdentityUser<int>
{
public string? FirstName { get; set; }
public string? LastName { get; set; }
public DateTime? FirstLoggedOn { get; set; }
public DateTime? LastLoggedOn { get; set; }
}
所以我告诉系统关键字段是一个整数。
我怎样才能对
UserManager
做同样的事情,这样我就不需要在这样的调用中将身份转换为字符串:_userManager.FindByIdAsync
?
我在 .NET Core 中能找到的唯一
UserManager
是:UserManager<TUser> : IDisposable where TUser : class
问候 詹姆
我想你可以检查一下这两个文件:
https://learn.microsoft.com/en-us/previous-versions/aspnet/dn613290(v=vs.108)#inheritance-hierarchy
.NET框架中的继承层次结构:
System.Object
→ Microsoft.AspNet.Identity.UserManager<TUser, TKey>
→ Microsoft.AspNet.Identity.UserManager<TUser>
.NET 6 中的继承层次结构:
Object → UserManager<TUser> → AspNetUserManager<TUser>
.NET 6 中不再有
UserManager<TUser, TKey>
。
你也可以按F12,然后进入
UserManager<TUser>
类查看方法。
它只接受字符串类型的参数,并且
AspNetUserManager<TUser>
中没有重写方法
默认情况下
IdentityUser
定义如下: