Extending ASP.NET Identity 2.0



我很难理解整个ASP.Net Identity框架,我首先尝试将Identity 1.0集成到现有的应用程序中,但最终得到了2个DbContext类,我的应用程序数据在MyDbContext上,Identity用户数据在IdentityDbContext上。

我想对我的应用程序数据和身份相关数据使用单个DbContext,我在另一个问题上发现,我可以像使用DbContext一样使用IdentityDbContext;然而,我想我错过了一些东西。

我使用的是来自身份团队的样本项目

PM> Install-Package Microsoft.AspNet.Identity.Samples -Pre

并尝试将DbSet属性插入ApplicationDbContext

 public class ApplicationDbContext : IdentityDbContext
{
    public ApplicationDbContext()
        : base("DefaultConnection")
    {
    }
    static ApplicationDbContext()
    {
        // Set the database intializer which is run once during application start
        // This seeds the database with admin user credentials and admin role
        Database.SetInitializer<ApplicationDbContext>(new ApplicationDbInitializer());
    }
    public virtual DbSet<Student> students { get; set; }
    public virtual DbSet<Teachers> teachers { get; set; }
    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
}

我正在使用ApplicationDbInitializer种子方法来填充这两个表,如下所示:

Student s = new Student { Name = "John" ... };
db.students.Add(s);
db.SaveChanges();

但是EF似乎没有创建这两个表,并且没有调用种子方法,这是怎么回事?

编辑:

嗯,我需要运行代码,使用EF的数据库来删除和重新创建数据库。

使用IdentityDbContext管理我的所有应用程序数据是否有任何开销?使用IdentityDbContext和使用通用版本IdentityDbContext<IdentityUser>?

在大多数情况下,只使用一个实体框架上下文是首选,从那时起,您只需要管理那一个,这意味着开销更少。

两者的区别在于,IdentityDbContext只是一个从DbContext派生的类(就像您自己制作时一样),但它包含处理身份验证的其他DbSet,因此您不必自己实现它。从IdentityDbContext派生是可以的。有关更多信息,您可以查看文档。

相关内容

  • 没有找到相关文章