我正在使用具有默认配置的 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秒调用一次。它从数据库中获取需要处理的记录列表。
这是奇怪的事情。假设我现在进入 SQL Management Studio 并更新一条记录并将 Command 设置为 0(无)以外的值。在下一次传递中, FindAll() 将在 queue_list 中获得一条记录!耶!
但后来我查看了记录,命令为 0(无).... 什么?如何??该命令触发的 FindAll() 是 != 0 (None) !
所以 FindAll() 匹配似乎有效,但它给了我一个缓存版本。那很不好。
我尝试了 qrepo.CacheEnabled = false,我尝试了 qrepo.ClearCache() 但无济于事。
我尝试使用 GetAll() 而不是 FindAll() (不确定到底有什么区别),但它甚至不会触发记录。
请指教?谢谢!