asp.net - 扩展 ASP.NET Identity 2.0

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

我无法理解整个 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个表,并且没有调用seed方法,这是怎么回事?

编辑:

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

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

最佳答案

在大多数情况下,首选只使用一个 Entity Framework 上下文,从那时起,您只需管理该单个上下文,这意味着更少的开销。

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

关于asp.net - 扩展 ASP.NET Identity 2.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26447631/

相关文章:

asp.net - 静态方法是否适合 Linq To SQL DAL?

asp.net - .NET 4.0 实现 OutputCacheProvider

asp.net - 动态数据的加扰 URL

c# - 如何在 asp.net mvc 中为我的存储库制作无类型界面?

c# - 在使用 include 语句急切加载时处理 Entity Framework 的缓慢性能?

entity-framework - 如何使用 EF 更新 Controller 中的对象?

asp.net - 当开发环境不在域上时,如何在域上测试 ASP 应用程序?

ASP.NET MVC3 TryValidateModel 验证整个模型集合,而不仅仅是单个实例

asp.net-mvc - NHibernate 应该负责从域对象映射到 View 模型吗?

.net - 更改实体的可访问性