使用NCache 4.6作为EF 6.1.3二级缓存,SqlDependency不起作用。 (它无法检测我在SQL服务器中直接进行的更改。当使用EF向数据库添加或删除实体时,也不会更新缓存或使其无效。虽然它检测到更新实体)
我在我的计算机上安装了NCache:IP 192.168.56.1
和SQL Server 2014 in vbox with IP:192.168.56.101
使用their site的说明并对其进行自定义以满足我的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
表示没有人订阅。
答案 0 :(得分: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不兼容,所以我禁用了它。