执行Add-Migration时抛出指定调用目标异常错误求助
解决Entity Framework
add-migration抛出“Exception has been thrown by the target of an invocation”的方案 以下是几种实用的排查和解决方法:
检查DbContext配置
确认DbContext类的OnConfiguring方法或配置文件(如appsettings.json)中的数据库连接字符串无误,没有拼写错误、缺失服务器地址/数据库名/认证信息等必要参数。同时确保DbContext构造函数能正确加载配置。清理并重建项目
按顺序执行:- 在Visual Studio中点击「生成」→「清理解决方案」
- 删除项目根目录下的
bin和obj文件夹 - 点击「生成」→「重新生成解决方案」
完成后再尝试运行add-migration MgName命令。
统一EF相关包版本
确保项目中所有Entity Framework相关包(如Microsoft.EntityFrameworkCore、Microsoft.EntityFrameworkCore.Tools、Microsoft.EntityFrameworkCore.SqlServer等)的版本完全一致,版本不匹配是引发这类反射异常的常见原因。获取详细错误日志
在Package Manager Console中执行带详细日志的命令,定位具体问题:add-migration MgName -Verbose详细日志会展示异常的内部堆栈信息,帮你找到触发问题的具体代码或配置。
检查实体类配置
排查所有实体类的配置是否存在错误:- 是否有未处理的循环引用
- .NET数据类型与对应数据库类型是否兼容
- 主键、外键的定义是否合理,有没有缺失必要的键配置
重置迁移历史
如果之前的迁移文件损坏,可尝试重置:- 删除项目中
Migrations文件夹下的所有文件(若有DesignTimeDbContextFactory则保留) - 在数据库中删除
__EFMigrationsHistory表 - 重新执行
add-migration InitialCreate(或自定义迁移名)
- 删除项目中
内容的提问来源于stack exchange,提问作者BKarayilmaz
相关产品推荐
相关产品推荐

