/ dotnet

ABP 项目中 Code-First 注意事项

以下内容是在 abp 项目连接 Oracle 数据库时候遇到一些问题的笔记,可能有一些不准确的地方。

配置

ProjectName.EntityFramwork中执行 EF Code-First命令的时候,要给ProjectName.EntityFramwork引用 Oracle 连接用的 Dll(如果你是用 Oracle 的话)用nuget上直接下载下来的似乎会出现版本不一致导致报错的情况。因为是单独执行,对应的App.config也要配置上和web.config一样的数据库连接串配置和其他相关的配置。
在对应的DbContextOnModelCreating方法中,指定对应的数据库名:

protected override void (DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.HasDefaultSchema("dbname");
        
        ...
    }

执行

在程序包命令行中对ProjectName.EntityFramwork项目执行Enable-Migrations生成迁移包

Enable-Migrations

比对数据库生成名为init的迁移执行文件的命令

 Add-Migration init

修改生成的目标文件对应的日期-init.cs

public Configuration()
    {
        AutomaticMigrationsEnabled = true;
        AutomaticMigrationDataLossAllowed = true; 
        ContextKey = "Key"; // 对应的迁移ID
    }

总之就是按照报错提示这样改过才得以正常执行……
依照照目标文件更新数据库

Update-Database -TargetMigration:init

参考文档