1

SqlDependency を開始しようとすると問題が発生します。

エラーは私に通知します:キーワードはサポートされていません:「メタデータ」。

クラッシュする直前のウィンドウから取得した接続文字列は次のとおりです。

?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接続文字列が有効であるとは考えていません。これを正しく使用する方法について何か考えはありますか?

YeagerTechEntities dbContext = new YeagerTechEntities();

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

            SqlDependency.Start(objectContext.Connection.ConnectionString);
4

2 に答える 2

4

EF 接続文字列は に対して有効ではないためですSqlDependency。のみで動作しますEntityConnectionが、SqlDependency使用しSqlConnectionます。したがって、dbContext で直接接続文字列を使用するか、エンティティ接続からデータベース接続文字列を抽出する必要があります。

また:

var connectionString = dbContext.Database.Connection.ConnectionString;

または

var connectionString = ((EnityConnection)objectContext.Connection).StoreConnection.ConnectionString;

とにかく、EF は とうまく機能しませんSqlDependency。SqlDependency は、SQL クエリを自分で作成し、それらを制御できることを期待しています。

于 2011-12-04T15:44:38.973 に答える
1

実際、私が動作させたコードスニペットは次のとおりです。

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 接続文字列です。

于 2011-12-11T06:23:12.260 に答える