Je suis en train de construire un site web et j'ai juste implémenté SqlCacheDependency en utilisant LinqToSQL comme ça.Dois-je toujours voir la requête dans SQL Profiler?
public IQueryable<VictoryList> GetVictoryList()
{
string cacheKey = HttpContext.Current.User.Identity.Name + "victoryCacheKey";
IQueryable<VictoryList> cachednews = (IQueryable<VictoryList>)HttpContext.Current.Cache.Get(cacheKey);
if (cachednews == null)
{
var results = from v in _datacontext.ViewVictoryLists
orderby _datacontext.GetNewId()
select new VictoryList
{
MemberID = v.MemberID,
Username = v.Aspnetusername,
Location = v.Location,
DaimokuGoal = v.DaimokuGoal,
PreviewImageID = v.PreviewImageID,
TotalDaimoku = v.TotalDaimoku,
TotalDeterminations = v.TotalDeterminations,
DeterminationID = v.DeterminationID,
DeterminationName = v.DeterminationName
};
SqlCacheDependency dependency =
new SqlCacheDependency(_datacontext.GetCommand(results) as SqlCommand);
HttpContext.Current.Cache.Add(cacheKey, results, dependency, DateTime.MaxValue,
TimeSpan.Zero, CacheItemPriority.Normal, null);
return results.ToList().AsQueryable();
}
return cachednews;
}
Il semble fonctionner comme les choses sont plus rapides noticbly en particulier sur certaines requêtes complexes, mais en regardant les choses en SQLProfiler Je vois encore la requête exécutée par, j'utilise le mode CommandBroker de SqlCacheDependency. Dois-je toujours voir la requête même si les données proviennent évidemment d'un objet mis en cache?
Oui, cela a fonctionné grâce à un tas .... – dswatik