Caching SqlDependency不使用实体框架

Caching SqlDependency不使用实体框架,caching,entity-framework-4.1,sqldependency,Caching,Entity Framework 4.1,Sqldependency,我在尝试启动SqlDependency时遇到问题 错误提示我:不支持关键字:“元数据” connectionstring在崩溃之前从即时窗口检索时如下所示 ?objectContext.Connection.ConnectionString "metadata=res://*/YeagerTech.csdl|res://*/YeagerTech.ssdl|res://*/YeagerTech.msl;provider=System.Data.SqlClient;provider connect

我在尝试启动SqlDependency时遇到问题

错误提示我:不支持关键字:“元数据”

connectionstring在崩溃之前从即时窗口检索时如下所示

?objectContext.Connection.ConnectionString
 "metadata=res://*/YeagerTech.csdl|res://*/YeagerTech.ssdl|res://*/YeagerTech.msl;provider=System.Data.SqlClient;provider connection string=\"data source=Bill-PC;initial catalog=YeagerTech;integrated security=True;multipleactiveresultsets=True;App=EntityFramework\""
这是代码。它在Start方法上崩溃。显然,它认为EF connectionstring无效。你知道我该如何正确使用这个吗

YeagerTechEntities dbContext = new YeagerTechEntities();

            ObjectContext objectContext = ((IObjectContextAdapter)dbContext).ObjectContext;

            SqlDependency.Start(objectContext.Connection.ConnectionString);

因为EF连接字符串对于
SqlDependency
无效。它仅适用于
EntityConnection
,但
SqlDependency
使用
SqlConnection
。所以您必须在dbContext中使用直接连接字符串,或者从实体连接中提取数据库连接字符串

要么:

var connectionString = dbContext.Database.Connection.ConnectionString;


无论如何,EF不能很好地处理
SqlDependency
。SqlDependency要求您自己编写SQL查询并控制它们。

因为EF连接字符串对
SqlDependency
无效。它仅适用于
EntityConnection
,但
SqlDependency
使用
SqlConnection
。所以您必须在dbContext中使用直接连接字符串,或者从实体连接中提取数据库连接字符串

要么:

var connectionString = dbContext.Database.Connection.ConnectionString;


无论如何,EF不能很好地处理
SqlDependency
。SqlDependency希望您自己编写SQL查询并控制它们。

实际上,我让它工作的代码片段如下所示:

YeagerTechEntities dbContext = new YeagerTechEntities();

ObjectContext objectContext = ((IObjectContextAdapter)dbContext).ObjectContext;

Application["dbContext"] = dbContext;

objectContext.Connection.ConnectionString =    
   ConfigurationManager.ConnectionStrings["YeagerTechEntities"].ConnectionString;

SqlDependency.Start(((System.Data.EntityClient.EntityConnection)objectContext.Connection)
   .StoreConnection.ConnectionString);

YeagerTechEntities是EF连接字符串。

实际上,我让它工作的代码片段如下:

YeagerTechEntities dbContext = new YeagerTechEntities();

ObjectContext objectContext = ((IObjectContextAdapter)dbContext).ObjectContext;

Application["dbContext"] = dbContext;

objectContext.Connection.ConnectionString =    
   ConfigurationManager.ConnectionStrings["YeagerTechEntities"].ConnectionString;

SqlDependency.Start(((System.Data.EntityClient.EntityConnection)objectContext.Connection)
   .StoreConnection.ConnectionString);
YeagerTechEntities是EF连接字符串