【发布时间】:2020-09-09 20:52:51
【问题描述】:
当我运行 Add-Migration 命令时,我需要在 .NET Core 2.2 项目中运行一小段代码(从 .env 文件加载环境变量)。我的项目中是否有任何地方可以放置此代码,以便它在创建迁移之前运行?我在某处读到 Startup.Configure 被执行,但事实并非如此。我需要在创建迁移时设置启动项目这一事实意味着正在执行某些事情。
为了澄清推理,这是我想要完成的:
在我的 Visual Studio 解决方案中,我还有一个 docker-compose 项目。我使用 .env 文件(因此可以将其添加到 .gitignore)来填充环境。我想使用相同的 .env 文件来设置 .NET 项目的环境,以避免在例如 appsettings 文件中重复条目。我发现了一个 Nuget 包,它非常适合在启动时加载 .env 文件,因此涵盖了代码方面。问题是当我尝试添加迁移时,我无法运行此包来导入包含连接字符串数据的 .env 文件,因此迁移添加失败。
【问题讨论】:
-
看起来像 XY 问题,您能解释一下为什么在添加迁移时需要运行一些代码吗?请注意,add-migration 只会生成一个迁移文件,您可以在之后对其进行修改(连同快照一起)
-
@Fabio 当然,我已经为我的问题添加了更多解释。
-
添加迁移命令可以等到其他东西完成吗?
-
取决于您如何创建 DbContext。对于复杂的情况,您可以实现
IDesignTimeDbContextFactory。这是有关 EF 命令行工具如何实例化 DbContext docs.microsoft.com/en-us/ef/core/miscellaneous/cli/… 的更多详细信息的链接
标签: asp.net-core .net-core entity-framework-core entity-framework-migrations