在请求中缓存数据的最佳做法是什么?
更具体地说,假设我有一个包含多行数据的表,每行需要进行单独的数据库查询以获取面包店的详细信息。我知道,在请求结束时,我将不得不获取波士顿每个面包店的数据。在我向表中添加数据之前,我想一次性选择我需要的所有面包店,所以我有它们。
1)如果我做了BakeriesTableRetrieval.GetRows(新的BakeriesTableEqualityCondition.CityId(CityIds.Boston)),那么当我后来做BakeriesTableRetrieval.GetRowMatchingId(idOfSomeBakeryInBoston)时,数据库缓存是否神奇地不必进行往返?
2)假设1是假的,或者我有一个不同的情况,我只需要缓存自己的东西,我该如何最好地保留自己的预请求缓存?
答案 0 :(得分:1)
以下我的回答适用于您使用EWL自己的网络框架(EWF),或者如果您在DataAccessState.Current.ExecuteWithCache
区域内的其他情况。
是的,只要您使用表检索,数据库缓存就会自动消除这些单行查询。使用查询检索,如果实现updateSingleRowCaches
部分方法,则可以完成相同的操作。
使用DataAccessState.Current.GetCacheValue
。