【问题标题】:Extending ASP.NET Identity 2.0扩展 ASP.NET Identity 2.0
【发布时间】:2014-12-14 08:55:26
【问题描述】:

我无法理解整个 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 似乎没有创建那 2 个表,并且没有调用种子方法,这是怎么回事?

编辑:

好吧,我需要运行使用数据库的代码,以便 EF 删除并重新创建数据库。

使用 IdentityDbContext 管理我的所有应用程序数据是否有任何开销? 使用 IdentityDbContext 和使用通用版本 IdentityDbContext 有什么区别?

【问题讨论】:

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


    【解决方案1】:

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

    两者之间的区别在于IdentityDbContext 只是一个派生自 DbContext 的类(就像您自己制作时一样),但它包含处理身份验证的额外 DbSet,因此您不必实现它你自己。从IdentityDbContext 派生很好。欲了解更多信息,您可以查看documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-24
      • 1970-01-01
      • 1970-01-01
      • 2016-09-16
      • 2016-01-26
      • 2019-07-02
      • 1970-01-01
      相关资源
      最近更新 更多