You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Entity Framework Code First无法创建新数据库及表的问题求助

解决Code First多上下文迁移生成空文件问题

嘿,我之前在处理多个DbContext的Code First迁移时也踩过一模一样的坑,咱们一步步来搞定它:

问题根源

当项目里存在多个DbContext时,Entity Framework默认不会自动识别你要针对哪个上下文生成迁移——直接跑add-migration命令的话,EF可能还是盯着之前的ApplicationDbContext,自然找不到新模型的变化,最后生成空的Up/Down方法。

正确操作步骤

1. 给新上下文指定迁移命令

打开Package Manager Console(PMC),先确认顶部的默认项目下拉框选中了包含PmisDatabaseContext的项目,然后按顺序执行以下命令:

(可选但推荐)给新上下文单独创建迁移目录

避免和之前的登录数据库迁移文件混在一起:

enable-migrations -Context PmisDatabaseContext -MigrationsDirectory Migrations\PmisMigrations

生成针对新上下文的迁移

明确指定要操作的上下文:

add-migration AddedImageLibrary -Context PmisDatabaseContext

更新数据库创建表

同样指定上下文执行更新:

update-database -Context PmisDatabaseContext

2. 额外验证点

  • 确认你的PmisDatabaseContext构造函数配置正确:
    public PmisDatabaseContext() : base("name=PmisDatabaseContext")
    {
        Database.SetInitializer<PmisDatabaseContext>(new CreateDatabaseIfNotExists<PmisDatabaseContext>());
    }
    
    这里的name=前缀是正确的写法,它会准确读取配置文件中同名的连接字符串。
  • 检查ImageLibrary模型的配置:你的代码里[Table("ImageLibrary")]、主键特性以及DbSet<ImageLibrary>的定义都没问题,EF能正确识别这个实体。

按这个流程操作后,EF就会正确识别PmisDatabaseContext对应的模型,生成包含创建ImageLibrary表逻辑的迁移文件,执行update-database后就能成功创建目标数据库和表了。

内容的提问来源于stack exchange,提问作者stack questions

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:09:22