对于 Asp.net Core 应用程序,我们必须使用哪一个?AddDbContext
or AddDbContextPool
?根据 EF Core 文档,AddDbContextPool
提供高性能,但默认的 Asp.net Core 项目模板使用AddDbContext
.
答案就在这里(在“DbContext pooling”下):https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-2.0#dbcontext-pooling https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-2.0#dbcontext-pooling
DbContext
不是线程安全的。所以你不能重复使用相同的DbContext
同时进行多个查询的对象(奇怪的事情发生)。通常的解决方案是创建一个新的DbContext
每次需要时都反对。就是这样AddDbContext
does.
然而,重用a并没有什么问题。DbContext
前一个查询已经完成后的对象。就是这样AddDbContextPool
做。它保留了多个DbContext
对象存活并为您提供一个未使用的对象,而不是每次都创建一个新对象。
您使用哪一个取决于您。两者都会起作用。池化有一些性能提升。然而,文档警告说,如果您在您的DbContext
类不应在查询之间共享,那么您不应该使用它。我认为这种情况很少见,因此在大多数情况下池化应该是合适的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)