我看到defaut模板使用ServiceProvder.GetService<ApplicationDbCotnext>()
来初始化DbContext,
但是当你进入静态方法时,我不知道如何获得DbContext
,因为没有ServiceProvider
。
有没有办法获得ServiceProvider
?
答案 0 :(得分:5)
嗯,首先,这与asp.net-core本身无关。这更多与依赖注入的工作方式有关。你必须问问自己为什么你的方法是静态的。这真的有必要吗?
如果你不能摆脱静态方法,你可能会一路走下去并引入另一种反模式http://pandas.pydata.org/pandas-docs/stable/io.html#sqlite-fallback。简而言之:在Startup类中,您将ServiceProvider的引用放在静态属性的静态属性(例如,调用它&#34; ServiceProviderSingleton&#34;)中(例如&#34; ServiceProviderProvider&#34;)。这样你就可以调用&#34; ServiceProviderProvider.ServiceProviderSingleton.GetService()&#34;。
同样,我建议给你的整体设计一个批判性的外观。但如果这是你需要/想要的,那么我希望它有所帮助。
答案 1 :(得分:0)
我们看看微软的静态方法(扩展) - 他们似乎没有在那里使用日志 - 只是抛出适当的异常,例如在UseMvc方法中(对于StartUp类):