提问人:Geo242 提问时间:11/2/2023 最后编辑:Geo242 更新时间:11/2/2023 访问量:81
EF Core Add-Migration 和 Update-Database 以无提示方式失败(生成成功)
EF Core Add-Migration and Update-Database Fails Silently (Build succeeded)
问:
多年后,我最近又开始与 EF 合作,这可能是一个愚蠢的问题。
当我从包管理器控制台运行(和)并且我的实体中没有错误时,它工作正常。但是,如果我犯了一个错误,就会按预期失败,但它不会给我任何关于出了什么问题的反馈,并且每次构建都会成功。如何让 EF CLI 向我显示错误?Add-Migration
Update-Database
Add-Migration
在静默失败的情况下,我添加了代码来执行自动迁移,然后我可以在应用程序运行时看到异常,但我永远无法通过 CLI 看到错误。Update-Database
我正在使用一台有很多限制的公司笔记本电脑,所以我认为它要么与此有关,要么我只是配置错误,或者我做错了什么。
这就是它失败时的样子......
PM> Add-Migration SomeMigration
Build started...
Build succeeded.
PM>
这就是它成功时的样子
PM> Add-Migration SomeMigration
Build started...
Build succeeded.
To undo this action, use Remove-Migration.
Add-Migration : Value does not fall within the expected range.
At line:1 char:1
+ Add-Migration SomeMigration
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [Add-Migration], ArgumentException
+ FullyQualifiedErrorId : System.ArgumentException,Add-Migration
PM>
我觉得有趣的是,当它显示错误时,它实际上有效!
更新
选择正确的项目不是问题。请不要建议这样做。如上所述,如果代码没有错误,则可以成功创建迁移。问题是在存在错误时显示错误。
答:
-1赞
Omid Moridi
11/2/2023
#1
您是否选择了正确的项目来运行?也就是说,指向 appsettings.json 文件中的数据库的项目。 在运行工具栏中,必须选择要运行的主项目,在“包管理器”部分中,必须选择包含 EF 的项目。
解决方案在用于迁移之前不得有任何生成错误
评论
0赞
Geo242
11/2/2023
是的,正如我所提到的,当我的代码中没有错误时,它会成功。我只是无法始终理解代码中的问题所在,因为我没有得到任何反馈。
0赞
Geo242
11/2/2023
但是,一个重要的信息可能是实体位于与存储库项目不同的项目中。我必须使用数据库上下文所在的存储库项目才能进行迁移。
0赞
Omid Moridi
11/2/2023
不重要!在“包管理器默认项目”组合框中,选择实体项目,然后从 VS Main 运行项目中选择具有 ConnectionString 数据的项目。
0赞
Geo242
11/2/2023
我认为这里忽略了这一点。选择正确的项目不是问题。我选择了正确的项目。当实体没有错误时,我可以毫无问题地使用。这是CLI应该显示错误的时候,它没有。Add-Migration
0赞
Omid Moridi
11/2/2023
目标项目“x”与迁移程序集“y”不匹配。更改目标项目或更改迁移程序集。使用 DbContextOptionsBuilder 更改迁移程序集。例如选项。UseSqlServer(连接, b => b.MigrationsAssembly(“yy”))。默认情况下,迁移程序集是包含 DbContext 的程序集。使用包管理器控制台的“默认项目”下拉列表,或从包含迁移项目的目录中执行“dotnet ef”,将目标项目更改为迁移项目。让我看看错误是什么!
评论
-verbose
Get-Help
Get-Help Add-Migration
dotnet ef
dotnet ef
dotnet ef asdf