我有一个对象是每组用户来管理内存中的并发更改。以固定的速度,比如每六秒,我获取更改的当前状态并将其应用于数据库。重要的部分是有一个单独的线程需要 ASP.NET Core MVC LifeCycle 之外的 dbcontext 实例。这使它变得困难,或者我不知道如何利用 indecency injection。
有没有办法在这个问题空间中利用 AddDbContextPool。似乎没有直接租用 AppDbContext 的方法,Microsoft 警告不要直接创建 AppDbContext,因为它的 API 可能会发生变化。据我所知,我没有办法将我的数据库上下文注入/租用到正在执行工作的线程中。
我正在使用 Reactive API 处理线程,我在其中创建了一个 Subjects 并使用了 Sample 管道,如下例所示:
UpdateSubject
.Sample(TimeSpan.FromSeconds(6))
.Subscribe(x => {
// This is where I'd like to take
// advantage of the dbcontext pooling
using(AppDbContext db = new AppDbContext){
// ...
// Iterate Over Changes
// ...
db.SaveChanges();
}
});
我目前的感知选项是。
什么都不做:架构已经在整合呼叫。
实施我自己的池并研究如何为每次使用重置上下文,
自己使用/实现 Microsoft 的内部类 DbContextPool 尽管有警告它严格用于内部使用并且 API 可能会更改
在我的用例中找到一种方法使其脱离 ASP.NET Core MVC 生命周期而不改变其功能,即 IE,找到一种利用依赖注入的方法。
*接受建议
UYOU
相关分类