有没有办法检测EntityFramework Core是否在工具中运行?

时间:2016-09-20 11:37:05

标签: entity-framework dependency-injection asp.net-core entity-framework-core

有没有办法检测我的应用程序是通过dotnet ef *还是PowerShell替代方案运行?

我正在使用Entity Framework Core创建一个多租户ASP.NET Core应用程序,我有逻辑来决定应该使用哪个连接字符串,但如果我创建迁移或更新,则不应该运行通过命令行创建数据库。我不能依赖于检查HttpContext的存在性,因为我在配置期间也使用DbContext,也不能使用其他命令行参数或环境变量。

编辑:找到一种方法来查看连接字符串是否已经配置,它不是理想的但我可以用它来帮助我的特定用例:

optionsBuilder.Options.Extensions
    .OfType<RelationalOptionsExtension>()
    .FirstOrDefault()?.ConnectionString

1 个答案:

答案 0 :(得分:1)

如果您在IDbContextFactory<T>(或启动)项目中创建一个实现DbContext的类型,工具将调用此方法,而不是尝试从服务获取DbContext或直接实例化它。