Entity framework EF datacontext和实体缓存

Entity framework EF datacontext和实体缓存,entity-framework,caching,garbage-collection,Entity Framework,Caching,Garbage Collection,出于性能原因,我使用.NET system.runtime.caching缓存了大量对象。我正在缓存来自EF datacontext的实体。我正在处理datacontext,但由于来自它的实体在缓存中,这是否意味着GC将无法收集它 示例代码: public static Menu GetMenu(string menuName, string languageCode) { ObjectCache cache = MemoryCache.Default;

出于性能原因,我使用.NET system.runtime.caching缓存了大量对象。我正在缓存来自EF datacontext的实体。我正在处理datacontext,但由于来自它的实体在缓存中,这是否意味着GC将无法收集它

示例代码:

 public static Menu GetMenu(string menuName, string languageCode)
        {
            ObjectCache cache = MemoryCache.Default;
            var menu = (Menu)cache[menuName + "cache"];

            if (menu == null)
            {
                using (PageDb db = new PageDb())
                {
                    menu = db.Menus.Where(m => m.Name == menuName && m.LanguageCode == languageCode).FirstOrDefault();
                }

                CacheItemPolicy policy = new CacheItemPolicy();
                policy.AbsoluteExpiration = DateTimeOffset.Now.AddMonths(1);
                cache.Set(menuName + "cache", menu, policy);
            }

            return menu;
        }

如您所见,我在缓存中存储了一个菜单对象,但它来自PageDb datacontext。菜单对象应该在内存中保留1个月,但是PageDb datacontext如何?

您使用代理吗?它们包含对
ObjectContext
的引用,因此可能会出现问题。是的,我使用dbContext获取poco类,其中一些类在em中具有虚拟成员。因此,如果对象被缓存,这意味着dbContext无法最终确定?