【发布时间】:2016-03-23 23:05:38
【问题描述】:
我有一个 EF6 Database First 应用程序,它使用从 dbo 模式生成到 edmx 的表。
为了更新某些相互配合的大型定价表,我根据日期在新模式中创建新表,然后在事务中,将当前表移动到备份模式,并将新表移动到dbo 架构。这是使用通过读取 edmx 文件和更改架构创建的新 MetadataWorkspace 实现的,并允许我拥有两个 DbContext,其中一个使用 dbo 架构中的现有数据,另一个使用新架构中的新表。并且非常适合数据库优先! See this SO article.
对于 CodeFirst,可以在 OnModelCreating 中设置 modelBuilder.HasDefaultSchema,但随后 DbContext 被锁定,并且不会为新的 DbContext 实例再次调用 OnModelCreating,因此现在设置的任何模式都将在持续时间内用于所有此类 DbContext应用程序。
我的问题是——如何使用 CodeFirst 动态更改 DbContext,我可以有两个 DbContext,每个都使用不同的模式?我不能只定义两个 DbContext 派生类,因为模式名称是动态的。
【问题讨论】:
标签: ef-code-first entity-framework-6 database-schema