NCache 作为 Entity Framework 二级缓存未与数据库同步
NCache as Entity Framework second level cache not syncing with database
使用 NCache 4.6 作为 EF 6.1.3 二级缓存,SqlDependency 不工作。 (它无法检测到我直接在 SQL 服务器中进行的更改。在使用 EF 向数据库添加或删除实体时也不会更新缓存或使其无效。尽管它检测到更新实体)
我已经在我的电脑上安装了 NCache,IP 为:192.168.56.1
和 SQL server 2014 in vbox,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
显示没有人订阅。
原来我需要运行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 依赖项不兼容,因此我禁用了它。
使用 NCache 4.6 作为 EF 6.1.3 二级缓存,SqlDependency 不工作。 (它无法检测到我直接在 SQL 服务器中进行的更改。在使用 EF 向数据库添加或删除实体时也不会更新缓存或使其无效。尽管它检测到更新实体)
我已经在我的电脑上安装了 NCache,IP 为:192.168.56.1
和 SQL server 2014 in vbox,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
显示没有人订阅。
原来我需要运行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 依赖项不兼容,因此我禁用了它。