草庐IT

缓存失效

全部标签

c# - 如何从数据库刷新 ObjectContext 缓存?

我们正在从数据库加载数据:varsomethings=Context.SomethingSet.ToList();然后有人在上下文之外删除或添加行。Out上下文仍然缓存已删除的对象,因为它不知道它们已被删除。即使我调用Context.SomethingSet.ToList(),我们的上下文仍然包含已删除的对象并且导航属性不正确。从数据库刷新整个集合的最佳方法是什么? 最佳答案 Refresh方法是你要找的:Context.Refresh(RefreshMode.StoreWins,somethings);

c# - 缓存或不缓存 - GetCustomAttributes

我目前有一个功能:publicstaticAttributeGetAttribute(MemberInfoMember,TypeAttributeType){Object[]Attributes=Member.GetCustomAttributes(AttributeType,true);if(Attributes.Length>0)return(Attribute)Attributes[0];elsereturnnull;}我想知道是否值得将一个属性的所有属性缓存到一个Attribute=_cache[MemberInfo][Type]字典,这需要使用不带任何类型参数的GetCust

c# - 无论如何在 C# 中缓存函数/方法

我厌倦了一次又一次地编写相同的代码来缓存数据访问层中的对象。有没有在不对函数进行太多更改的情况下缓存c#函数结果的方法。目前是否有任何框架支持此功能?我可以通过编写自定义“c#函数属性”来存档相同内容吗?如果是这样,请给我一些要点以开始实现? 最佳答案 可能性1:使用ILWeaving之前提到过Postsharp您也可以试试MethodCache.Fody包。可能性2:使用代理/拦截框架示例(Ninject和Ninject.Interception):publicclassCacheAttribute:InterceptAttrib

c# - 编译 Expression<T> 时,它是否被隐式缓存?

当Expression编译后,结果代码是否被框架隐式缓存?我在考虑静态Regex的思路框架隐式编译和缓存最后几个正则表达式的方法。如果编译Expression对象不缓存,您能否推荐一些最佳实践来减少编译时间或如果我手动缓存表达式可能导致问题的任何问题?publicMyResultTypeDoSomething(intarg1,intarg2){varresult=invokeHandler((IDoSomethingHandlerh)=>h.DoSomething(arg1,arg2));returnresult;}privateTResultinvokeHandler(Express

c# - GAC(全局程序集缓存)位于何处?它有什么用?

这个问题在这里已经有了答案:Whereisthe.NETFrameworkGlobalAssemblyCache?(3个答案)HowdoIregistera.NETDLLfileintheGAC?(14个答案)关闭9年前。我阅读了更多有关GAC的信息,但直到现在我还不清楚。我收集到的几件事是,GAC具有相同的程序集,但版本不同。但是我无法找到如何创建两个具有不同版本并保存在同一文件夹中的程序集。

c# - MemoryCache.Add 返回 true 但不将项目添加到缓存

我正在尝试使用如下所示的Add方法将项目添加到MemoryCache.Default实例:boolresult=MemoryCache.Default.Add(cacheKey,dataToCache,cacheItemPolicy)result的值为true,表示该项目已添加到缓存中,但当我尝试立即检索它时,缓存为空。我还尝试使用Set方法添加项目,结果是空缓存。缓存有默认的99Mb内存限制,因此不会出现没有空间添加新项目的情况。有什么想法吗?privatestaticvoidInsertCachedData(stringcacheKey,objectdataToCache,stri

c# - 使 Entity Framework 缓存失效/禁用

我看到有很多关于EF缓存的问题,但我还没有找到解决问题的方法。直接的问题是如何完全禁用EntityFramework6缓存?或者,我能否以编程方式告诉EF忘记缓存,因为数据发生了一些变化?背景首先,我继承了一个应用程序,该应用程序由EF(模型优先定义实体)和普通旧SQL(操作数据)的奇怪组合组成。我所做的是重构应用程序,以便:使用EF6LINQ进行简单的查询(例如实体的GetAll())将复杂的数据操作留在SQL中,使用DbContext.Database.Connection需要时添加Spring.Web支持启用DI和事务(尚未)目前,我已经重新组织了代码,以便应用程序的主要功能(在

c# - 获取当前文件长度/FileInfo.Length 缓存和陈旧信息

我正在跟踪一个文件夹及其文件长度,至少其中一个文件仍在写入。我必须不断更新我用于其他目的的每个文件长度的记录。Update方法每15秒调用一次,如果文件长度与上次更新中确定的长度不同,则更新文件的属性。更新方法看起来像这样:vardirectoryInfo=newDirectoryInfo(archiveFolder);vararchiveFiles=directoryInfo.GetFiles().OrderByDescending(f=>f.CreationTimeUtc);foreach(FileInfofiinarchiveFiles){//checkiffileexisted

c# - 如何访问 C# 类库中的 HTTP 缓存?

如何在C#类库中访问HTTP缓存? 最佳答案 建议您使用System.Web.HttpRuntime.Cache而不是System.Web.HttpContext.Current.Cache,如explainedinthisarticle.此外,虽然本文讨论了性能,但我过去也遇到过HttpContext.Current并不总是在您期望的时候可用的问题,尤其是在处理异步处理程序。另一件需要注意的事情是,如果您没有在HTTP请求的上下文中访问缓存,HttpContext将无济于事,因为没有适合您的相关上下文访问。

c# - 缓存异步操作

我正在寻找一种优雅的方式来缓存异步操作的结果。我首先有一个这样的同步方法:publicStringGetStuff(Stringurl){WebRequestrequest=WebRequest.Create(url);using(varresponse=request.GetResponse())using(varsr=newStreamReader(response.GetResponseStream()))returnsr.ReadToEnd();}然后我让它异步:publicasyncTaskGetStuffAsync(Stringurl){WebRequestrequest=