子类未保存在ASP.Net MVC Identity Model的数据库中

时间:2014-11-22 08:46:54

标签: c# asp.net asp.net-mvc entity-framework asp.net-identity

我是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);
}

但桌子总是空的。有没有办法让这个工作?

1 个答案:

答案 0 :(得分:2)

我怀疑UserManager.Create()期待ApplicationUser个对象而不是Person,因此,只需将其视为ApplicationUser

您应该只将特定于应用程序的属性添加到ApplicationUser类,而不是继承它。描述该过程的教程是here

简而言之,您只需在/Models/identity.cs文件中的此类定义中添加属性:

public class ApplicationUser : IdentityUser
    {

然后进行必要的迁移骚扰。

事实上,我的MVC版本有助于在Identity.cs YMMV中包含一个带有该教程链接的注释: - )