|
3
|
| ataravati · 技术社区 · 7 年前 |
|
|
1
5
即使在另一个没有键和关系的数据库中创建表,我也无法重现这个问题。所以我肯定你的模型有问题。不幸的是,您没有添加我可以比较的代码,所以我无法区分不同之处并直接回答问题。我唯一能做的就是展示什么对我有用。不过,首先我要说几句。 我认为你不应该看这篇文章。因为没有理由将上下文添加到现有数据库中。
事实上,违约
关于角色,这些并不是真正的声明,因为它们不告诉任何关于身份的信息,而是用于授权。这就是为什么可以将它们存储在AspNetUserRoles表中。不幸的是,角色作为角色声明添加到标识中,这会使事情变得混乱。 请注意,索赔中有身份信息。这意味着应用程序不必调用标识上下文。E、 g.User.IsInRole检查当前标识的角色声明,而不是表中存储的角色。 关于不同的上下文,另一个上下文(我通常称之为业务模型)与标识上下文没有任何共同之处。电子邮件和其他字段不是业务模型的一部分,对业务模型也没有意义。你可能认为这些字段是多余的,但事实上它们不是。我可以使用google帐户登录,但对于企业,请使用我的工作电子邮件地址。 有几个原因使上下文保持分离。
如本条所述:
那么,如果不应该从应用程序访问标识上下文,如何管理信息? 对于当前用户,不需要访问users表。所有信息都在身份声明中。访问标识上下文的唯一原因是允许用户登录。除了用户管理。 添加对用户的引用(用户id)就足够了。如果需要在报表中显示其他用户的信息(如名称),请在业务上下文中创建一个用户表来存储该信息。可以将关系添加到此表,因为它是同一上下文的一部分。
现在是我的密码。像其他人提到的那样,不太可能添加以下行:
是原因。没有
当我按照本文的步骤进行操作时,我将得到以下模型:
然后添加Employee类并取消注释上面ApplicationUser类中的行:
在数据库中,我添加了表:
你可以使用
您可以尝试这样做,或者选择将两个上下文分开。 |
|
|
2
1
关注点: 贡献: Ruard van Elburg post于8月24日16:31给出了关于这个问题的很好的见解;但是,我注意到他的代码中缺少一个关键组件,那就是DbSet,需要放在IdentityModels的DBContext中。 技术堆栈:
步骤1:添加
第2步:添加
步骤3:假设您为数据库设置了连接字符串,则需要生成迁移。包管理器控制台的路径:工具->NuGet Packer Manager->包管理器控制台
|
|
|
Petr · 扩展ASP。NET标识,并在视图中访问它 8 年前 |
|
|
SadikAli · 如何在Asp中获取用户的角色名。网络身份 8 年前 |
|
|
user650922 · 代码第一种子Asp。net标识 10 年前 |
|
SBirthare · 使用ASP在SQL脚本中创建用户和角色。NET标识 10 年前 |