DbContext是轻量级对象;它被设计为每个业务交易使用一次。将DbContext设置为Singleton并在整个应用程序中重复使用它会导致其他问题,例如并发性和内存泄漏问题。
答案 0 :(得分:1)
DbContext
对象不应真正用作单例对象。这是因为它代表Unit of Work,因此应仅保留与数据库进行事务处理的时间。这也是,不是线程安全的。
为您的Web服务器的每个请求创建一个请求是完全可以的,这是一种非常常见的模式。请求完成后,上下文中仅SaveChanges
。例如,在某些情况下,您可能希望进行中间保存。如果您没有客户端生成的ID,则可以获取新商品的DB ID。
如果有一个容器,可以使用DI容器为您解决所有问题,.Net Core对此非常擅长。
或者,您可以在控制器中对其进行更新,请记住,这很难编写测试。