AspNet如何与我的模型识别

时间:2014-01-07 19:18:04

标签: asp.net-mvc asp.net-identity

我正在尝试在the External Authentication Services (C#)上阅读本教程。我需要一些初步的解释才能继续前进。查看发布MVC5的默认模板,我看到了:

// You can add profile data for the user ...
public class ApplicationUser : IdentityUser
{
    public string HomeTown { get; set; }
    public DateTime? BirthDate { get; set; }
}

如果我想将其称为用户而不是 ApplicationUser ,该怎么办?也许我想添加导航属性,以便我可以与其他模型建立关系?另外,当我查看表格时,名称为 AspNetUsers ,而不是 ApplicationUser 。最后,如果我想使用自己的上下文怎么办?

感谢您的帮助。

1 个答案:

答案 0 :(得分:12)

  

1)如果我想将其称为User而不是ApplicationUser,该怎么办?

您可以更改为您想要的任何名称,只需确保将ApplicationUser替换为名称。

  

2)也许我想添加一个导航属性,以便我可以建立   与我的其他模特的关系?

如果你有一个类调用地址,你想将addressId作为外键添加,见下文:

 public class Address
{
    public int Id { get; set; }
    public string Street { get; set; }
}

public class User : IdentityUser
{
    public string HomeTown { get; set; }
    public DateTime? BirthDate { get; set; }
    public int AddressId { get; set; }
    [ForeignKey("AddressId")]
    public virtual Address Address { get; set; }
}

public class ApplicationDbContext : IdentityDbContext<User>
{
    public ApplicationDbContext()
        : base("DefaultConnection")
    {
    }
    public DbSet<Address> Addresses { get; set; }
}
  

3)另外当我查看表时,名称是AspNetUsers而不是   ApplicationUser。

ASP.NET Identity继承自ASP.NET成员资格系统。注册新用户时 使用默认模板,AspNetUsers和AspNetUserRoles等。默认情况下会创建这些表。 您可以通过修改IdentityModel.cs来修改这些表名。有关更多详细信息,请查看以下链接:

How can I change the table names when using Visual Studio 2013 ASP.NET Identity?

  

4)如果我想使用自己的上下文怎么办?

您可以创建自己的DBContex,MVC 5允许您拥有多个DBContext,例如ApplicationDbContext和DataDbContext(自定义DbContext)。 ApplicationDbContext通常包含ASP.NET Membership数据表。 DataDbContext通常包含与用户无关的数据表。

public class Blog
{
    public int BlogId { get; set; }
    public int Title { get; set; }
}

public class MyDbContext : DbContext
{
    public MyDbContext() 
        : base("DefaultConnection")
    {

    }
    public DbSet<Blog> Blogs { get; set; }
}

注意:您可能需要使用EF迁移,请参阅此处的详细信息:

ASP.Net Identity customizing UserProfile