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