我想使用可以使用 SQL DEPENDENCY 中内置的 sql server 的实体框架核心(或任何其他 ORM),以便每次从表中插入、更新、删除,触发 sql 依赖事件并刷新实体框架内的缓存对于那个特定的表。
换句话说,我有一个 800 MB 的数据库,有 50 个表,只有一对多、多对一和一对一的关系。我想把所有这些表作为表放入内存中。
实体框架上下文应该是一次性的,而不是永远存在的。
我想使用可以使用 SQL DEPENDENCY 中内置的 sql server 的实体框架核心(或任何其他 ORM),以便每次从表中插入、更新、删除,触发 sql 依赖事件并刷新实体框架内的缓存对于那个特定的表。
换句话说,我有一个 800 MB 的数据库,有 50 个表,只有一对多、多对一和一对一的关系。我想把所有这些表作为表放入内存中。
实体框架上下文应该是一次性的,而不是永远存在的。
您可以使用任何 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