1
有什么方法可以检测我的应用程序是否正在运行dotnet ef *
或PowerShell选项?任何方式来检测EntityFramework核心是否在工具内运行?
我正在用Entity Framework Core创建一个多租户ASP.NET核心应用程序,并且我有逻辑来决定应该使用哪个连接字符串,但是如果我通过创建迁移或更新数据库,则不应运行命令行。我不能依靠检查是否存在HttpContext
,因为我在配置期间也使用我的DbContext
,我也不能使用其他命令行参数或环境变量。
编辑:找到一个方法,如果一个连接字符串已经配置,它的效果并不理想,但我可以用它来帮助我的具体使用情况:
optionsBuilder.Options.Extensions
.OfType<RelationalOptionsExtension>()
.FirstOrDefault()?.ConnectionString
我之前尝试过IDbContextFactory,但最终没有使用它,因为它不支持依赖注入。我需要使静态可访问的所有必要的服务和配置依赖关系,除非我失去了一些东西? –
把它看作另一个'Main',你不能注入服务。通过调用'Startup.ConfigureServices()'来构建你的服务提供者,或者提出另一种可以调用的方法。 – bricelam
完美!为没有IHostingEnvironment的'Startup'做了一个替代构造函数,然后我用'new ServiceCollection'调用'ConfigureServices'。 –