学向勤中得,萤窗万卷书。这篇文章主要讲述如何在静态方法或控制器外的类中获取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,打开表,获取数据
文章图片
答案你可以将
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();
}
推荐阅读
- ASP.NET Core TypeLoadException无法从程序集“System.Web”加载类型“System.Web.PreApplicationStartMethodAttribute”(
- 如何读取.NET Core中属性内的配置(appsettings)值()
- app.shared.module.ts和app.server.module.ts之间的差异
- 控制器未加载.AspNetCore.Identity.Application用户cookie
- ApplicationUser在Asp.Net Core 2.0中的ActionFilter中()
- org.hibernate.MappingException(未知实体:com.app.persistence.Test)
- 修改/删除现有的inapp订阅产品
- 我可以在谷歌玩游戏中使用相同的排行榜和成就安卓游戏
- Android - 从CH Play打开时恢复应用程序