asp.net – 从DataContext缓存数据
我们在Web应用程序中使用
Linq-to-SQL DataContext,该应用程序向应用程序提供只读数据,并且永远不会更新(已设置ObjectTrackingEnabled = false以强制执行此操作.
由于数据永远不会更改(除了偶尔的配置更新),因此使用新的DataContext为每个Web请求从SQL Server重新加载它似乎很浪费. 我们尝试在Application对象中缓存DataContext以供所有请求使用,但它产生了很多错误,我们的研究表明这是一个坏主意,DataContext应该在同一工作单元内处理,而不是线程安全等等 因此,由于DataContext是数据访问机制,而不是数据存储,我们需要考虑缓存从中获取的数据,而不是上下文本身. 更愿意使用实体和集合本身来执行此操作,因此代码可以不知道它是处理缓存还是“新鲜”数据. 怎么能安全地完成? 首先,在处理DataContext之前,我需要确保实体和集合已完全加载.有没有办法从数据库中方便地强制满载所有内容? 其次,我很确定存储对实体和集合的引用是一个坏主意,因为它会 (a)当DataContext超出范围或时,导致实体被破坏 (b)防止DataContext超出范围 那么我应该克隆EntitySets并存储它们吗?如果是这样,怎么样?或者这里有什么? 解决方法
这不完全是您的问题的答案,但我建议避免在网站端缓存.
我更愿意专注于优化数据库查询,以便更快,更有效地进行数据检索. 缓存将: >不可扩展 [编辑] 如果我需要缓存5MB数据,我会使用Cache对象,可能是延迟加载.我会使用一组轻量级集合,例如ReadonlyCollection< T>,Collectino< T>.我可能会使用ReadonlyDictionary< TKey,TValue>也可以在内存中快速搜索.我会使用LINQ-to-Objects来处理集合. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – ASP.NET MVC 3模型绑定 – 与输入id =“T
- asp.net – Nlog数据库目标 – 是否使用keepConnection?
- ASP.NET是否从bin中将所有程序集加载到AppDomain中?
- asp.net-mvc-4 – 我应该如何使用ReturnUrl = ViewBag.Retu
- Worker Service in ASP .NET Core
- 加速ASP.Net网站或应用程序
- asp.net-mvc – IE没有为MVC5呈现DatePicker
- asp.net-mvc-3 – 在Razor中加入文本变量
- ASP.NET:如何重定向,预填充表单数据?
- ASP.net Core中正确的标记用法是什么? TagHelpers与HTML H
- 如何在ASP.net中获取页面中的主页?
- asp.net – 你能使用基于属性的WebApi 2与WebFor
- asp.net – 单元测试和Log4net
- asp.net – 如何在gridview中只显示日期而不是da
- ASP.NET Core去掉HTTPS配置和SSL证书
- asp.net – DotLess的“web”属性究竟做了什么?
- asp.net – 如何在web.config中迭代自定义键?
- asp.net-mvc – ASP.Net MVC:静态HTML文件的Ren
- 基于asp.net下使用jquery实现ajax的解决方法
- asp.net-mvc – 如何在ASP.NET MVC中传递页面的元