問題タブ [sqlcachedependency]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-core - .Net コア SQL キャッシュの依存関係
ASP.Net コア アプリにキャッシュを実装しようとしています。現在、私が実装しているのはメモリ内キャッシュを使用してIMemoryCache
いますが、SQL Server 2016 の対応するレコードが変更された場合、キャッシュが無効になる必要があります。私が見つけた1つの方法ですが、このリンクSQLCacheDependency
のように.Net Coreの一部ではありません
これについて何か考えはありますか?
c# - SqlDependency.Start を 2 回連続して呼び出し、2 回目は失敗しましたか?
複数回呼び出す目的は、 に基づいてSqlDependency.Start
の新しいインスタンスを作成するなど、他のアクションの前に問題がないことを確認することです。ここhttps://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldependency.start (v=vs.110).aspx(備考セクション)に関するMicrosoftのドキュメントによると、呼び出しのように見えます複数回はまったく問題ありません:SqlCacheDependency
Command
SqlDependency.Start
SqlDependency.Start
同一のパラメーター (呼び出しスレッドで同じ接続文字列と Windows 資格情報) を使用した複数の呼び出しは有効です。
しかし、実際には 2 回目の呼び出しで失敗する可能性があり (実際には成功したことはありません)、次の呼び出しのすべての試行がSqlDependency.Start
失敗します ( を返すことfalse
で、例外はスローされません)。
私がしたことは、最初の制限 (上記のリンクの「備考」セクションに記載) を満たす必要がありました。つまり、すべての呼び出しでSqlDependency.Start
同じパラメーターを使用する必要があります (実際には、接続文字列である同じパラメーターが 1 つだけありました)。次のようになります。
そのため、Microsoft が何を述べているか (備考セクションの最初の制限) を理解するのは非常に困難です。2 つの呼び出しはまったく同じです。しかし、2 番目の呼び出しが失敗すると、その後に使用された同じ呼び出しは失敗します (つまり、複数回呼び出しを試みた場合、正常に開始する機会はありません)。
Sql Server のログを見ると、「リモート サービスが見つかりません ... 存在しないため」のようなメッセージがたくさんあることがわかります。
この問題の解決策や回避策は必要ありません。Microsoft が述べたように期待どおりに動作しない理由について説明が必要なだけですか、または Microsoft が述べたことを誤解していますか?