【问题标题】:How do I cache something within a request in EWL?如何在 EWL 的请求中缓存某些内容?
【发布时间】:2015-06-16 23:15:49
【问题描述】:

在请求中缓存数据的最佳做法是什么?

更具体地说,假设我有一个包含多行数据的表,并且每一行都需要执行单独的数据库查询以获取面包店的详细信息。我知道,在请求结束时,我必须获得波士顿每个面包店的数据。在将数据添加到表格之前,我想一次性选择我需要的所有面包店,以便拥有它们。

1) 如果我执行 BakeriesTableRetrieval.GetRows(new BakeriesTableEqualityCondition.CityId(CityIds.Boston)),当我稍后执行 BakeriesTableRetrieval.GetRowMatchingId(idOfSomeBakeryInBoston) 时,数据库缓存是否会神奇地不必往返?

2) 假设 1 为假,或者我有不同的情况,我只需要缓存我自己的东西,我如何最好地保留我自己的预请求缓存?

【问题讨论】:

    标签: c# caching data-access-layer enterprise-web-library


    【解决方案1】:

    以下我的回答适用于您使用 EWL 自己的 Web 框架 (EWF) 时,或者如果您在 DataAccessState.Current.ExecuteWithCache 块内。

    1. 是的,只要您使用表检索,数据库缓存就会自动消除那些单行查询。使用查询检索,如果您实现 updateSingleRowCaches 部分方法,您可以完成同样的事情。

    2. 使用DataAccessState.Current.GetCacheValue

    【讨论】:

    • #1 为什么不起作用的小问题。我不是通过主键查询,而是通过一对唯一的值进行查询。 #1 是否适用于复杂的主键?如果我让表将该元组作为其主键而不是单独的一个,它会有助于自动缓存吗?
    • @GregSmalter:我认为 #1 目前不支持复杂的主键。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 2017-07-07
    相关资源
    最近更新 更多