在更改数据库时重新加载缓存

时间:2013-04-23 13:04:35

标签: .net sql caching sqldependency invalidation

我正在开发一个使用Entity Framework访问数据库的.net客户端应用程序。它是一个多用户应用程序,其中(有时)几小时内没有变化,有时可能会有数百个变化。

我需要缓存相当多的数据,因为需要进行一些检查并向用户显示。我解决了一个缓存在一个应用程序实例中发生更改时更新其他缓存的问题。但是,我不确定在应用程序的其他实例中发生更改时最好的方法是什么。

我尝试使用SqlDependency使我的缓存无效,但是当只有一位更改时,这会强制我重新加载非常多的数据。表现不太好。当使用SqlDependecy的应用程序更改数据时,它会触发,因此一次更改会使缓存更新两次。

由于我从未开发出具有这种缓存量的东西,所以我不知道如何最好地继续进行。这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:3)

单个位仍然不会强制您重新加载所有数据 您可以读取读取数据并仅更新已更改的数据。

或者您可以在SQL上实现一个触发器来写出更改,因此您只需要检查该表 如果多个客户端正在从触发器表同步,那么可以有另一个FK表,客户端可以指示他们选择了什么 并且像夜间一样清理掉东西。