有没有办法检测我的应用程序是通过dotnet ef *
还是PowerShell替代方案运行?
我正在使用Entity Framework Core创建一个多租户ASP.NET Core应用程序,我有逻辑来决定应该使用哪个连接字符串,但如果我创建迁移或更新,则不应该运行通过命令行创建数据库。我不能依赖于检查HttpContext
的存在性,因为我在配置期间也使用DbContext
,也不能使用其他命令行参数或环境变量。
编辑:找到一种方法来查看连接字符串是否已经配置,它不是理想的但我可以用它来帮助我的特定用例:
optionsBuilder.Options.Extensions
.OfType<RelationalOptionsExtension>()
.FirstOrDefault()?.ConnectionString
答案 0 :(得分:1)
如果您在IDbContextFactory<T>
(或启动)项目中创建一个实现DbContext
的类型,工具将调用此方法,而不是尝试从服务获取DbContext
或直接实例化它。