小编osk*_*skr的帖子

覆盖 EntityFramework Code First 迁移中的“dbo”架构名称

我正在尝试使用 EntityFramework Codefirst 和 Oracle 数据库创建一个独立于架构的模型,但 EF 使用 dbo 作为迁移的默认值作为架构。我重写了 DBContext 上的 OnModelCreating 方法来解决此问题,并在 connectionString 中使用用户

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
   base.OnModelCreating(modelBuilder);
   modelBuilder.HasDefaultSchema(string.Empty);
}
Run Code Online (Sandbox Code Playgroud)

问题是 __MigrationHistory 忽略此默认架构,并且在运行第一次迁移时出现此错误:

ORA-01918: 用户 'dbo' 不存在

尝试使用此 msdn 条目来自定义该表的架构。

自定义历史上下文:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

和数据库配置:

public sealed class Configuration :
        DbMigrationsConfiguration<Model.MyDbContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = false;
        SetHistoryContextFactory("Oracle.ManagedDataAccess.Client",
                                 (connection, defaultSchema) …
Run Code Online (Sandbox Code Playgroud)

c# oracle entity-framework-6 entity-framework-migrations

5
推荐指数
1
解决办法
3971
查看次数