-->

NCACHE作为实体框架二级缓存不同步数据库(NCache as Entity Framework

2019-09-28 01:01发布

使用4.6 NCACHE作为EF 6.1.3二级缓存,的SqlDependency是行不通的。 (它不能检测的变化,我直接在SQL服务器,也没有更新缓存或使用EF添加或删除实体数据库时无效的。尽管它检测更新实体)

我在我的电脑安装了nCache与IP: 192.168.56.1和SQL服务器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显示,没有人认购。

Answer 1:

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

下面是我做的:

1-恢复新鲜罗斯文数据库。

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"; 之后,所有的查询。

另外,我发现, 实体框架事件探查器是要么nCache的或SQL依赖不兼容的,所以我禁用它。



文章来源: NCache as Entity Framework second level cache not syncing with database