如何在Web API应用程序中最好地利用DBContext

本文关键字:DBContext Web API 应用程序 | 更新日期: 2023-09-27 18:18:59

我有一个Web API,它使用实体框架DBContext来执行CRUD操作。我的问题是:

最初,我使用了DBContext的静态实例。但是,使用这种格式,当我再次查询数据集时,对数据库表的任何更改都不会显示;数据过时了。

作为临时修复,在所有公共类函数的开头,我创建了一个新的DBContext对象,并调用该对象从数据库中获取数据。这不是一个好主意,原因有很多。但当我使用这种技术时,数据不再陈旧。

如何适当地利用DBContext,以便多个用户始终能够从请求中看到当前数据库数据?我应该把DBContext作为一个字段放在类中,并在类的构造函数中实例化它吗?在这种情况下,每个类都应该有自己的DBContext对象吗?

是否有适当使用DBContext的最佳实践?我担心陈旧的数据和不准确的结果被推送给我的用户。

如何在Web API应用程序中最好地利用DBContext

DbContext不是线程安全的,因此将其设置为静态对于服务器代码来说不是一件好事。创建DbContext的开销很低,所以我不明白为什么我们必须避免使其成为实例变量。

还应该注意实体框架缓存数据。如果您直接对数据库中的缓存数据进行更改,则实体框架将不会看到这些更改,直到您创建新的DbContext,或者告诉底层的ObjectContext刷新。