Linq to sql 按ID获取缓存实体,而不调用db

Linq to sql 按ID获取缓存实体,而不调用db,linq-to-sql,caching,Linq To Sql,Caching,如何实现GetItemFromCacheById函数,使其将对象从linq带到sql缓存,而不是调用数据库 using (var cxt = new DbDataContext()) { // Read item into the cache Item item = cxt.Items.Where(x => x.Id == 1).Single(); //... item = GetItemFromCacheById(cxt, 1); } 您不应该依赖L

如何实现GetItemFromCacheById函数,使其将对象从linq带到sql缓存,而不是调用数据库

using (var cxt = new DbDataContext())
{
    // Read item into the cache
    Item item = cxt.Items.Where(x => x.Id == 1).Single();

    //...

    item = GetItemFromCacheById(cxt, 1);
}

您不应该依赖LINQtoSQL的内部缓存。LINQtoSQL旨在从数据库中获取对象,并将更改提交回数据库。它并不打算成为中端缓存组件,尽管在内部,它确实具有某些缓存行为。 ()


在这种情况下,为什么需要缓存实体?是否需要实体的未更改版本?您关心性能吗?

它不能像您发布的那样工作的原因是因为linq to sql中有一个小错误。必须将要筛选的lambda表达式放置在单个方法本身中,如下所示:

Item=cxt.Items.Single(x=>x.Id==1)


根据该网站的说法,该漏洞将在.net 4.0中修复。

事实上,我不知道该漏洞有任何实际应用。只是想更好地理解可能性。