我是 ASP.Net 身份模型的新手,并尝试创建我的应用程序用户类的子类。我想将它们保存在数据库的其他表中:
[Table("Persons")]
public class Person : ApplicationUser{...}
我在种子方法中以这种方式创建人员类:
Person testUser = new Person();
UserManager.Create(testUser);
但这只会在我的数据库中的 ApplicationUser 表中创建条目。创建它们后,我尝试使用用户 ID 获取人员数据:
var userID = User.Identity.GetUserId()
using (ApplicationDbContext context = new ApplicationDbContext())
{
var result = context.PersonModels.FirstOrDefault(x => x.Id == userID);
}
但是表总是空的。有没有办法让它工作?
我怀疑UserManager.Create()
期待一个ApplicationUser
对象而不是一个Person
,因此,只是将其视为ApplicationUser
。
您应该只将特定于应用程序的属性添加到 ApplicationUser
类中,而不是从该类继承。描述该过程的教程在这里
简而言之,您只需要在/Models/identity.cs 文件中的此类定义中添加属性:
public class ApplicationUser : IdentityUser
{
然后进行必要的迁移。
事实上,我的 MVC 版本包含一条评论,其中包含指向 Identity 中教程的链接.cs YMMV :-)