是否可以合并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();
}
}
有什么方法可以合并这两个上下文,所以我只有一个数据库和一个要管理的上下文?
感谢您的帮助,
标记
答案 0 :(得分:3)
IdentityDbContext默认继承自DBContext。 无需创建新的上下文(在您的情况下为tbContext) - 只需从IdentityModels.cs剪切并粘贴ApplicationDbContext并将其放入数据层。