如何在静态方法或控制器外的类中获取applicationDbContext的dbContext

学向勤中得,萤窗万卷书。这篇文章主要讲述如何在静态方法或控制器外的类中获取applicationDbContext的dbContext相关的知识,希望能为你提供帮助。
当我在控制器外部的asp.net核心类中工作时,例如从我的数据库表tbl_Notes获取一些记录,然后我需要一个_dbcontext或ApplicationDBContext来请求数据。

public static async Task< User_SumModel> get_User_Sums(ClaimsPrincipal parUser) { //------------< get_User_Sums(User) > ------------ //*get User Summary Table //return null; if (parUser == null) return null; ApplicationDbContext _dbContext = Common.DB.get_DbContext(); long sIDUser = await getIDUser_as_Number(parUser, _dbContext); User_SumModel summary = await _dbContext.tbl_User_Sums.FirstOrDefaultAsync(u => u.IDUser == sIDUser); return summary; //------------< / get_User_Sums(User) > ------------ }

但是我如何在公共任务或共享类中获得_dbContext?
当我在局部视图中,然后我想从服务器添加一些数据。
如何在静态方法或控制器外的类中获取applicationDbContext的dbContext

文章图片

applicationdbcontext运行良好,但我无法在任何公共类
如何在静态方法或控制器外的类中获取applicationDbContext的dbContext

文章图片
的控制器之外
方法应该是这样的:获取当前的dbcontext,打开表,获取数据
如何在静态方法或控制器外的类中获取applicationDbContext的dbContext

文章图片

答案你可以将IServiceProvider传递给Class并从ApplicationDbContext创建新的范围IServiceProvider。 1.简单的代码如下:
public class DataSeed {public static async Task InitializeData(IServiceProvider serviceProvider, bool createUsers = true) { using (var serviceScope = serviceProvider.GetRequiredService< IServiceScopeFactory> ().CreateScope()) { var _context = serviceScope.ServiceProvider.GetService< ApplicationDbContext> (); //use _context as your requirement } } }

【如何在静态方法或控制器外的类中获取applicationDbContext的dbContext】2.打电话给全班
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, IAntiforgery antiforgery) { //seed init data DataSeed.InitializeData(app.ApplicationServices).Wait(); }


    推荐阅读