1)はい、目的が正しく設計されているため、信頼できると思います(キャッシュの無効化)
2)いいえ。これが、クエリを発行することによってのみサブスクライブできる理由です。これにより、データのフェッチと通知する新しい更新の間に競合が発生しなくなります。
3)データベース(またはインスタンス)の再起動は、保留中のすべてのクエリ通知に SqlNotificationInfo
Restart
の値 。 SqlDependencyがクエリ通知に基づいている方法を読む
より良い理解のために。 SqlDependency
として データベースへの接続を常に開いたままにしておくと、データベースが利用できないことがSqlDependency
によって検出されます。 明示的なクエリ通知の前でも
4)いいえ。これについてはさらに詳しく説明します...
5)「欠落したデータ」はありません。クエリ通知(したがってSqlDependency)は、何について通知することはありません。 データが変更されました。 変更されたことを通知するだけです 。あなたはいつも戻ってすべてを読むことになっています 何が変わったかを確認するためにデータを戻します(質問/回答2に戻ります)。新しく起動したアプリケーションは、そもそもデータをまだ照会していないため、通知される変更はありません。 後のみ 最初にデータを照会して、通知を受け取ることができます。
問題の説明から、クエリ通知が必要であるとは確信していません。 アプリケーションが実行されていなくても、いつ発生したかに関係なく、変更に対応したいと考えているようです。 。これは確かにキャッシュの無効化ではなく、変更の追跡です。したがって、データキャプチャの変更
または