dbcontext mysql_EF6 MySql标识另一个DBContext

使用Identity 2的EF6和MySql的ASP.NET MVC 5.我已经做了类似DBA的'bigdata'已经很多年了,现在我又回到了代码之中 . 我理解EF作为一种架构,但我在为我的项目奠定了底层,特别是MySql皱纹时缺乏专业知识 .

我成功完成的任务:使用MySQLConfiguration,MySqlHistoryContext和MySqlInitializer创建项目,运行迁移以成功创建Identity表,将站点部署到本地服务器并成功注册用户并登录 . 很棒!

问题:我失去了如何管理两个上下文,合并上下文,什么应该是我的最佳实践,因此我可以继续扩展Identity对象并通过POCO模型添加新的数据库表并迁移到同一个数据库并让它们工作通过控制器的上下文 .

指导会很有帮助 . 我相信我的问题在于创建第二个上下文,我更喜欢使用相同的连接 .

附件是来自其他教程和参考的我的类mod .

如何创建一个新的上下文,它将使用迁移从POCO模型创建一个新表?

public class ApplicationDbContext : IdentityDbContext

{

static ApplicationDbContext()

{

Database.SetInitializer(new MySqlInitializer());

}

public ApplicationDbContext()

: base("DefaultConnection", throwIfV1Schema: false)

{

}

public static ApplicationDbContext Create()

{

return new ApplicationDbContext();

}

}

网上的一些评论表明不需要MySqlInitializer . 我硬编码了db名称,所以简单地“让它工作” .

public class MySqlInitializer : IDatabaseInitializer

{

public void InitializeDatabase(ApplicationDbContext context)

{

if (!context.Database.Exists())

{

context.Database.Create();

}

else

{

var migrationHistoryTableExists = ((IObjectContextAdapter)context).ObjectContext.ExecuteStoreQuery(

string.Format("SELECT COUNT(*) FROM [hardcodeddbname].__MigrationHistory"));

if (migrationHistoryTableExists.FirstOrDefault() == 0)

{

context.Database.Delete();

context.Database.Create();

}

}

}

}

public class MySqlConfiguration : DbConfiguration

{

public MySqlConfiguration()

{

SetHistoryContext(

"MySql.Data.MySqlClient", (conn, schema) => new MySqlHistoryContext(conn, schema));

}

}

public class MySqlHistoryContext : HistoryContext

{

public MySqlHistoryContext(

DbConnection existingConnection,

string defaultSchema)

: base(existingConnection, defaultSchema)

{

}

protected override void OnModelCreating(DbModelBuilder modelBuilder)

{

base.OnModelCreating(modelBuilder);

modelBuilder.Entity().Property(h => h.MigrationId).HasMaxLength(100).IsRequired();

modelBuilder.Entity().Property(h => h.ContextKey).HasMaxLength(200).IsRequired();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值