如何最好地将DBContext与Web API应用程序结合使用

时间:2013-06-18 15:49:53

标签: c# asp.net-mvc-4

我有一个使用Entity Framework DBContext执行CRUD操作的Web API。我的问题如下:

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

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

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

是否有适当使用DBContext的最佳做法?我担心过时的数据和不准确的结果被推送给我的用户。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

还应注意,实体框架缓存数据。如果直接在数据库中更改缓存数据,则在创建新的DbContext或将基础ObjectContext告诉Refresh之前,实体框架将不会看到这些更改。