DbContext class in Asp.net MVC 5 with Identity 2.0

DbContext class in Asp.net MVC 5 with Identity 2.0

当您使用 Entity Framework 时,您需要有一个从 DbContext 派生的上下文 class。

Asp.net 身份使用 EF,默认模板创建以下 class:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection", false)
    {
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
}

此 class 不直接 从 DbContext 派生。对于我自己的数据(我想保存到数据库的 classes)我应该创建自己的数据库上下文 class 吗?

如果我想执行一个操作来更新身份用户和我自己的 classes,我需要使用这两个上下文。所以这感觉不是很自然。

我是否也应该继续使用 ApplicationDbContext class 作为我自己的 class 的上下文?那行得通吗?

在使用身份时为我自己的 classes 使用 EF 的最佳方法是什么?

使用从 IdentityDbContext 继承的单个上下文 class。有关详细信息,请参阅 this answer

您需要将所有 classes 的 DbSet 添加到 ApplicationDbContext 中。

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
    : base("DefaultConnection", false)
    {
    }

    //Public DBSets
    public DbSet<LeaveApplication> LeaveApplications { get; set; }
    public DbSet<LeaveStatus> LeaveStatus { get; set; }
    public DbSet<Department> Departments { get; set; }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
}