Caching SqlDependency不使用实体框架
我在尝试启动SqlDependency时遇到问题 错误提示我:不支持关键字:“元数据” connectionstring在崩溃之前从即时窗口检索时如下所示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
?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连接字符串