Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NCache作为实体框架二级缓存未与数据库同步_C#_Entity Framework_Sql Server 2014_Ncache - Fatal编程技术网

C# NCache作为实体框架二级缓存未与数据库同步

C# NCache作为实体框架二级缓存未与数据库同步,c#,entity-framework,sql-server-2014,ncache,C#,Entity Framework,Sql Server 2014,Ncache,使用NCache 4.6作为EF 6.1.3二级缓存时,SqlDependency不起作用。(它无法检测我直接在SQL server中所做的更改。在使用EF向数据库添加或删除实体时,也不会更新缓存或使其无效。尽管它检测到更新实体) 我已在我的计算机中安装了具有IP:192.168.56.1的NCache,并在具有IP:192.168.56.101的vbox中安装了SQL server 2014 使用来自的指令并自定义它们以满足我的IP和用户的要求,我执行了以下SQL: ALTER DATABAS

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

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

使用来自的指令并自定义它们以满足我的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;
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

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

结果表明,我需要对数据库运行
ALTER AUTHORIZATION::[NORTHWND]to user1

以下是我所做的:

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

2-运行以下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;
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
注意,在这个查询中,我故意省略了
创建队列“NCacheSQLQueue-192.168.56.1”和之后的所有查询

另外,我发现它与NCache或SQL依赖项都不兼容,所以我禁用了它