|
1
4
重新更新
当然是。这就是添加和使用工厂的全部原因。因此,您不应该注入DbContext。AddDbContextFactory()同时注册工厂和(Scoped)上下文这一事实具有误导性。您仍然没有将上下文与注入一起使用的作用域。 它的用处有限,可能会有一种情况(例如启动时的DataFeeding),您首先(手动)创建一个Scope,然后将DbContext与注入一起使用。
你能链接到几个吗?在页面的持续时间内保留DbContext是可以接受的,但您需要在该页面上使用Dispose()。这就是 OwningComponentBase 是为而发明的。 将其交给GC也可以,上下文在管理其连接方面是明智的。但是,这仍然是非常草率的。
不,DbContext是IDisposable的,所以你不应该想要它。
DbContextFactory本身是瞬态的,您可以使用它来创建一个DbContext,该DbContext的作用域为
瞬态对象不与请求绑定,只要您的代码包含对它们的引用,它们就会存在。 它可以用于非线程安全的状态,但主要用于不需要处理的无状态服务。 |
|
|
2
2
除了@HH的回答。
不,如果你注射
要从工厂获取工作单元上下文,您需要通过调用
在您的示例中:
然后在你的一种方法中这样使用它:
您不需要担心上下文的管理:它们不是由DI管理的。你从工厂里得到一个,使用它,然后通过处理它来释放它。
您是否考虑过将组件中的数据管理和持久性抽象为可测试的数据管道? |