C# 如何以尽可能少的工作量从UserIdentity继承?

C# 如何以尽可能少的工作量从UserIdentity继承?,c#,asp.net-core,.net-core,entity-framework-core,asp.net-identity,C#,Asp.net Core,.net Core,Entity Framework Core,Asp.net Identity,我有一个继承自IdentityUser的类层次结构,我想知道如果除了IdentityUser中已经定义的内容之外,层次结构上的“什么都没有”与身份验证相关,我需要做什么 我是否可以继承它并在仍然使用的情况下创建对象 .AddDefaultIdentity<IdentityUser>() .AddDefaultIdentity() 或者,当我的用户是IdentityUser的子类型时,即使我没有使用他们的任何属性进行身份验证,它也不起作用吗 我没有真正的叶节

我有一个继承自
IdentityUser
的类层次结构,我想知道如果除了
IdentityUser
中已经定义的内容之外,层次结构上的“什么都没有”与身份验证相关,我需要做什么

我是否可以继承它并在仍然使用的情况下创建对象

            .AddDefaultIdentity<IdentityUser>()
.AddDefaultIdentity()
或者,当我的用户是
IdentityUser
的子类型时,即使我没有使用他们的任何属性进行身份验证,它也不起作用吗

我没有真正的叶节点作为用户分支的层次结构,所以我不能真正使用最底层的类

我是否可以继承它并在仍然使用的情况下创建对象

添加标识服务时,应注册新对象

services.AddDefaultIdentity<ApplicationUser>()
    .AddEntityFrameworkStores<ApplicationDbContext>()
    .AddDefaultUI();

参考资料:

由于我在网上找不到示例(它们都显示了如何使用自定义用户类型,而不是层次结构),因此我尝试了一些代码并进行了深入研究

另外,使用从IdentityUser继承的任何对象(或
AddDefaultIdentity
中指定为用户的任何类)都没有问题

当试图创建一个用户时,传递从该类继承的对象将在数据库中创建相应的对象(该对象不是在
UserManager.CreateAsync
中铸造的,而是通过上下文本身的简单添加添加添加到上下文中,而不是在类型化的DBSet上)

相关代码可以在UserStore的源代码中找到:第165行,我们可以看到一个简单的

Context.Add(user);
让EF core在数据库中创建适当的鉴别器

因此,总体而言,如果不需要定制身份验证/标识,只需要向用户添加更多信息,那么拥有一个用户层次结构似乎可以很好地工作,保留服务中声明的默认
UserIdentity
类不会带来任何问题


我还没有测试它是否会对通过UserManager检索用户造成问题,因为我的用例不需要它。

但是我没有ApplicationUser,而是有大量的用户子类型层次结构,所以我不能使用AddDefaultIdentity,因为它实际上是AddDefaultIdentity。因此我想知道使用identityuser是否安全我已经在meantype中做了一些测试,它似乎起了作用(我将继承链中较低的类型传递给CreateUserAsync,它需要一个IdentityUser,而我的整个对象似乎都被创建了)
Context.Add(user);