0

我想使用可以使用 SQL DEPENDENCY 中内置的 sql server 的实体框架核心(或任何其他 ORM),以便每次从表中插入、更新、删除,触发 sql 依赖事件并刷新实体框架内的缓存对于那个特定的表。

换句话说,我有一个 800 MB 的数据库,有 50 个表,只有一对多、多对一和一对一的关系。我想把所有这些表作为表放入内存中。

实体框架上下文应该是一次性的,而不是永远存在的。

4

1 回答 1

1

您可以使用任何 ORM 从数据库中检索数据。从数据库中检索数据后,您可以在将项目插入缓存之前设置对项目的 SQL 依赖关系。

NCache 提供了自己的 SQL 依赖实现,独立于用于检索数据库内容的框架(EF、NHibernate、ADO.NET 等)。在此功能中,NCache 向数据库服务器注册 SQL 命令(SELECT 查询和 SELECT 存储过程)。如果任何 UPDATE 或 DELETE 事件修改了可以使用那些注册的 SQL 命令检索的结果集,则 SQL 服务器将向 NCache 发送通知作为响应,将删除相应的缓存数据。

因此,在 db 上下文的 using 块中,您可以将从数据库中检索到的内容添加到缓存中,并在其上设置 NCache SQL 依赖项。

为了允许 100% 更新缓存数据以响应 UPDATE 事件,而不是完全删除受影响的缓存数据,这涉及集成自动重新加载功能,该功能以支持源提供程序的形式利用 NCache 的直读功能。在这种情况下,您可以在缓存项上设置一个重新同步标志,以指定 NCache 应该检索新数据,以防该项目被 SQL 依赖项删除。为此,读取直通提供程序将继续并从数据库并替换过时的缓存数据。Read-thru 提供者与 write-thru 提供者一起构成 NCache 支持源提供者,使 NCache 能够代表客户端执行对数据库的读取和写入命令。

有关 SQL 依赖的更多信息可以在以下链接中找到:

http://www.alachisoft.com/resources/docs/ncache/prog-guide/sql-dependency.html

可以在以下链接中找到有关 NCache 支持源提供程序的信息:

http://www.alachisoft.com/resources/docs/ncache/prog-guide/data-source-provider.html

于 2019-02-21T09:54:53.730 回答