デフォルト設定で SharpRepository.EntityFramework を使用しています。app.config でリポジトリを定義します。これは大きなアプリケーションなので、関連するコード スニペットのみを示します。
IEnumerable<IntegrationQueue> queue_list =
qrepo.FindAll(item => item.IntegrationID == Integration.ID
&& (DateTime.Now > item.NextTry
&& item.Lock == false
&& item.Status != StatusEnum.Success && item.Status != StatusEnum.GaveUp)
|| item.Command != CommendEnum.None);
foreach (IntegrationQueue iq in queue_list)
{
Lock(iq);
Logger.Instance.Trace("Processing record " + iq.ToString());
したがって、コードのこの部分は 15 秒ごとに 1 回呼び出されます。処理する必要があるデータベースからレコードのリストを取得します。
これが奇妙なことです。ここで、SQL Management Studio に移動してレコードを更新し、Command を 0 (なし) 以外に設定するとします。次のパスで、 FindAll() はレコードを queue_list に取得します! わーい!
しかし、レコードを調べたところ、Command は 0 (なし) です。どのように??そのコマンドでトリガーされた FindAll() は != 0 (なし) でした!
したがって、FindAll() マッチングは機能しているように見えますが、キャッシュされたバージョンが表示されます。それは悪いことです。
qrepo.CacheEnabled = false を試し、qrepo.ClearCache() を試しましたが、役に立ちませんでした。
FindAll() の代わりに GetAll() を使用しようとしましたが (違いが正確にはわかりません)、レコードでトリガーすることさえできませんでした。
ご意見をお聞かせください?ありがとうございました!