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
相关产品推荐
相关产品推荐

