C# 如何在EWL中缓存请求中的内容?

C# 如何在EWL中缓存请求中的内容?,c#,caching,data-access-layer,enterprise-web-library,C#,Caching,Data Access Layer,Enterprise Web Library,在请求中缓存数据的最佳实践是什么 更具体地说,假设我有一个包含几行数据的表,每行都需要进行单独的数据库查询,以获取面包店的详细信息。我知道在请求结束时,我必须获得波士顿每个面包店的数据。我想在向表中添加数据之前,一次性选择我需要的所有面包店,这样我就有了它们 1) 如果我执行BakeriesTableRetrieval.GetRows(新的BakeriesTableEqualityCondition.CityId(CityId.Boston)),那么当我以后执行BakeriesTableRetr

在请求中缓存数据的最佳实践是什么

更具体地说,假设我有一个包含几行数据的表,每行都需要进行单独的数据库查询,以获取面包店的详细信息。我知道在请求结束时,我必须获得波士顿每个面包店的数据。我想在向表中添加数据之前,一次性选择我需要的所有面包店,这样我就有了它们

1) 如果我执行BakeriesTableRetrieval.GetRows(新的BakeriesTableEqualityCondition.CityId(CityId.Boston)),那么当我以后执行BakeriesTableRetrieval.GetRowMatchingId(idOfSomeBakeryInBoston)时,数据库缓存会神奇地不必往返吗


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

当您使用EWL自己的web框架(EWF)时,或者如果您在
DataAccessState.Current.ExecuteWithCache
块中,我下面的答案适用

  • 是的,只要您使用表检索,数据库缓存将自动消除这些单行查询。使用查询检索,如果实现
    updateSingleRowCaches
    partial方法,则可以完成相同的任务

  • 使用
    DataAccessState.Current.GetCacheValue

  • 为什么#1不起作用。我不是通过主键进行查询,而是通过一对唯一的值进行查询。#1是否适用于复杂的主键?如果我让表将该元组作为主键,而不是单独的一个元组,这会有助于自动缓存吗?@GregSmalter:我认为#1目前不支持复杂的主键。