我正在使用
Oracle.ManagedDataAccess.Client
Entity Framework 6.2.0
.
dbo.
所有数据库实体前面的架构名称(命令:
update-database -StartupProject MyDbProject -Verbose -Script
).
创建表“dbo”。“MyEntity”
从中的自定义架构中运行SQL脚本时,此行为会导致问题
Oracle DB
在我的主数据库上下文中,我设置了以下内容(
不相关代码省略
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext() : base("ApplicationDbContext")
{
}
public DbSet<MyEntity> MyEntity { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema(String.Empty);
}
}
创建表“MyEntity”
但是,仍然有一个地方没有受到更改的影响,那就是“\u MigrationHistory”表,它显然使用了自己的上下文。要删除此表的“dbo”,我使用了以下方法:
public class CustomHistoryContext : HistoryContext
{
public CustomHistoryContext(DbConnection dbConnection, string defaultSchema)
: base(dbConnection, defaultSchema)
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.HasDefaultSchema(String.Empty);
}
}
public class CustomHistoryConfiguration : DbConfiguration
{
public CustomHistoryConfiguration()
{
this.SetHistoryContext("Oracle.ManagedDataAccess.Client",
(connection, defaultSchema) => new CustomHistoryContext(connection, String.Empty));
}
}
创建表“MyEntity”
这两个更改结合在一起—允许首次成功运行迁移(命令:
update-database -StartupProject MyDbProject -Verbose
).
_MigrationHistory
正在
下降
没有明显的原因,EF尝试重新迁移所有表。因为已经存在表(例如
MyEntity
ORA-00955:名称已被现有对象使用
什么原因
_迁移历史记录
在新的迁移尝试中被丢弃?预期的行为是,EF确定迁移已经运行,并在控制台中输出没有要运行的新迁移!