【问题标题】:Repository pattern for non SQL data sources非 SQL 数据源的存储库模式
【发布时间】:2017-04-21 22:21:14
【问题描述】:

我想创建一个由业务层和存储库层组成的 N 层应用程序,用于处理 SQL 数据库以外的数据源,例如,如果我想实现一个存储库以从文本文件或 XML 文件中读取数据并查询包含'C#'的行数或计算平均分数等

似乎如果用户每次想要查询文本文件中的数据时都从 UI 调用调用,那么对于大文件来说效率不高,因为它每次都会通过层调用存储库,并且需要将所有数据加载到内存中,然后每次查询,然后再将其重新显示给用户 - 有没有一种方法可以一次加载所有数据,然后允许对其执行多个查询,或者必须这样做每次查询前都加载到内存中?

是否有任何有效的方法可以为非 SQL 数据库数据源进行 N 层设计,而不必每次都将大量数据/文本文件加载到内存中?

【问题讨论】:

  • 听起来你只需要在你的存储库中实现缓存。就像,从文本文件中读取数据,将其存储在变量中(即,在内存中),然后从该变量中读取(如果存在)。如果您知道文件已更改,您可能希望有一些更新变量的方法。但坦率地说,这个问题有点宽泛。有无数种方法可以按照您所询问的方式实现 n 层设计。
  • 使用缓存(.Net 4.0 以上的内存缓存)并通过后台进程刷新缓存。而且您的查询将从内存缓存中运行。
  • @MikeMcCaughan 和 loneshark 感谢您的 cmets。听起来我需要缓存从文本文件返回的数据。我是否需要将文本文件的全部内容加载到存储库类中的可缓存对象/属性中?我不明白它是如何在多个事务中存储和重复使用的。
  • @loneshark99 根据您的建议,我已使用 MemoryCache。如果您将其添加为答案,我可以将其标记为答案。谢谢。
  • @Theomax 好的,很高兴它有帮助。

标签: c# repository-pattern


【解决方案1】:

您可以使用 .net 中的内存缓存,然后让后台进程定期更新缓存。您的查询将从缓存中运行。

谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    相关资源
    最近更新 更多