Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#ASP.NET-需要搜索/排序的对象的缓存列表?_C#_Asp.net_Caching - Fatal编程技术网

C#ASP.NET-需要搜索/排序的对象的缓存列表?

C#ASP.NET-需要搜索/排序的对象的缓存列表?,c#,asp.net,caching,C#,Asp.net,Caching,我有一个Order对象列表 这些对象在我的应用程序的多个用户之间共享,并且在经常访问时很少更改,这使它们成为缓存的理想候选对象 我面临的问题是,我对我的MSSQL数据库进行LINQ查询,该数据库进行排序和搜索,但是如果我将它们保存在缓存中,我该如何做呢?我不想重复代码(枯燥!)。在我看来,您必须这样做 使用通用方法将对象加载到内存中,并将其缓存为列表/字典。。任何适合你的单身BL课程 然后,执行排序/搜索的Linq查询必须在BL类中的缓存对象集合上完成,而不是直接进入MySQL数据库 因此,

我有一个
Order
对象列表

这些对象在我的应用程序的多个用户之间共享,并且在经常访问时很少更改,这使它们成为缓存的理想候选对象


我面临的问题是,我对我的MSSQL数据库进行LINQ查询,该数据库进行排序和搜索,但是如果我将它们保存在缓存中,我该如何做呢?我不想重复代码(枯燥!)。

在我看来,您必须这样做

  • 使用通用方法将对象加载到内存中,并将其缓存为列表/字典。。任何适合你的单身BL课程
  • 然后,执行排序/搜索的Linq查询必须在BL类中的缓存对象集合上完成,而不是直接进入MySQL数据库
因此,在第一次调用完成的情况下,将查询缓存的集合,但由于它仍然是空的,因此您可以去获取所有对象(当然这取决于数据量),然后一旦数据进入内存,就会对其执行LINQ查询。
后续调用不会命中数据库,而只命中缓存的集合


您必须注意访问集合的线程是否安全。此外,您可能会包括一些刷新间隔,基本上是时间戳,根据这些时间戳,您可以在一些固定的间隔内刷新缓存。

在我看来,您必须这样做

  • 使用通用方法将对象加载到内存中,并将其缓存为列表/字典。。任何适合你的单身BL课程
  • 然后,执行排序/搜索的Linq查询必须在BL类中的缓存对象集合上完成,而不是直接进入MySQL数据库
因此,在第一次调用完成的情况下,将查询缓存的集合,但由于它仍然是空的,因此您可以去获取所有对象(当然这取决于数据量),然后一旦数据进入内存,就会对其执行LINQ查询。
后续调用不会命中数据库,而只命中缓存的集合

您必须注意访问集合的线程是否安全。此外,您还可以包括一些刷新间隔,基本上是时间戳,根据这些时间戳,您可以在一些固定的间隔内刷新缓存