合并DBContext和IdentityDbContext

时间:2015-03-19 13:02:06

标签: c# asp.net-mvc entity-framework

是否可以合并DBContext和IdentityDbContext - 启用迁移,然后使用一个更新语句管理代码首次更新到我的数据库?

即。在我的IdentityModels.cs文件中:

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

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

在我的tbContext.cs文件中(我在添加模型类时创建)我有:

namespace tb.Models
{
public class tbContext : DbContext
{
    public tbContext() : base("name=tbConn")
    {
        Database.SetInitializer<tbContext>(new tbInitializer<tbContext>());
    }
    public System.Data.Entity.DbSet<tb.Models.Tour> Tours { get; set; }
}
}

public class tbInitializer<T> : DropCreateDatabaseAlways<tbContext>
{
    protected override void Seed(tbContext context)
    {
        ApplicationDbContext userscontext = new ApplicationDbContext();
        var userStore = new UserStore<ApplicationUser>(userscontext);
        var userManager = new UserManager<ApplicationUser>(userStore);

        // Create user
        if (!userscontext.Users.Any(x => x.UserName == "marktest"))
        { var user = new ApplicationUser { UserName = "marktest", Email = "marktest@gmail.com" }; userManager.Create(user, "Pa$$w0rd!");}

        var tour = new List<Tour>
        { // seed database code };
        tour.ForEach(s => context.Tours.Add(s));
        context.SaveChanges();
    }
}

有什么方法可以合并这两个上下文,所以我只有一个数据库和一个要管理的上下文?

感谢您的帮助,

标记

1 个答案:

答案 0 :(得分:3)

IdentityDbContext默认继承自DBContext。 无需创建新的上下文(在您的情况下为tbContext) - 只需从IdentityModels.cs剪切并粘贴ApplicationDbContext并将其放入数据层。