首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缓存Linq2Sql数据

缓存Linq2Sql数据
EN

Stack Overflow用户
提问于 2011-01-14 20:25:16
回答 1查看 238关注 0票数 0

我有一个网络应用程序。它在小型表上读取大量数据,并编写一些数据。我希望将整个数据表放入缓存中,并查询缓存的数据。我覆盖上下文的Table<T>()方法,这样我们就可以提供缓存而不是活数据。对于插入和支持单元测试数据访问也很有用。太棒了。

因此,我们开始使用缓存数据,并发现更新和删除不起作用。

我们从db中提取一个对象,将其抛到List<T>中,将该列表放入httpCache中,然后删除数据上下文。

两个请求之后,我们调用重写的表<T>,它获取列表,并取出对象。我们更改它,然后需要将缓存的对象附加到db上下文中。所以我们称之为myContext.Attach(myobject) and.....BOOM

尝试附加或添加一个非新的实体,可能是从另一个DataContext加载的。这是不支持的。

有办法绕过这个限制吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-14 23:22:08

听起来像--缓存的实体仍然附加到查询它们的原始DataContext。有一种方法(打破了保持DataContext生命周期短的最佳实践规则)是将DataContext与实体一起缓存,然后在要删除或更新缓存的实体时使用缓存的上下文。

您提到缓存的实体被使用“两个请求之后”-如果这些请求都发生在短时间内,那么打破短生命周期规则可能不是问题。

另一种选择是缓存基于实体但不是实体的对象,当更新存储在缓存的非实体对象中的实体时,在新的DataContext上查询干净的实体,更新这些实体,然后保存在新创建的DataContext上。

还有其他方法可以做到这一点--我发现“LINQ行动”一书在处理这类案件时非常有用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4695568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档