1

使用 NCache 4.6 作为 EF 6.1.3 二级缓存,SqlDependency 不起作用。(它无法检测到我直接在 SQL Server 中所做的更改。在使用 EF 向数据库添加或删除实体时,它也不会更新缓存或使其无效。尽管它检测到更新实体)

我已经在我的计算机中安装了 NCache,IP:192.168.56.1和 SQL server 2014 在 vbox 中,IP:192.168.56.101

使用他们网站上的指令并定制它们以满足我的 IP 和用户,我执行了以下 SQL:

ALTER DATABASE NORTHWND SET ENABLE_BROKER with rollback immediate;
GO
--Select is_broker_enabled from sys.databases where name ='NORTHWND'

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO user1
GRANT CREATE QUEUE TO user1
GRANT CREATE SERVICE TO user1
GRANT CREATE PROCEDURE TO user1


CREATE QUEUE "NCacheSQLQueue-192.168.56.1";
CREATE SERVICE "NCacheSQLService-192.168.56.1" ON QUEUE."NCacheSQLQueue-192.168.56.1"([http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification]);

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO user1;
GRANT RECEIVE ON "NCacheSQLQueue-192.168.56.1" TO user1;
GRANT RECEIVE ON QueryNotificationErrorsQueue TO user1;
GRANT SEND ON SERVICE :: "NCacheSQLService-192.168.56.1" to user1;

另外,select * from sys.dm_qn_subscriptions显示没有人订阅。

4

1 回答 1

1

事实证明,我需要运行ALTER AUTHORIZATION ON DATABASE::[NORTHWND] TO user1;.

这是我所做的:

1- 恢复了一个新的 Northwind 数据库。

2-运行以下SQL:

ALTER DATABASE NORTHWND SET ENABLE_BROKER with rollback immediate;
GO

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO sa
GRANT CREATE QUEUE TO sa
GRANT CREATE SERVICE TO sa
GRANT CREATE PROCEDURE TO sa

ALTER AUTHORIZATION ON DATABASE::[NORTHWND] TO sa

请注意,在此查询中,我故意省略CREATE QUEUE "NCacheSQLQueue-192.168.56.1";了之后的所有查询。

另外,我发现Entity Framework Profiler与 NCache 或 SQL Dependency 都不兼容,所以我禁用了它。

于 2016-06-28T19:53:30.127 回答