protected void RegisterViewsAndServices() { _container.RegisterType <IAppConfigEntityFactory, AppConfigEntityFactory>(new ContainerControlledLifetimeManager()); _container.RegisterType <IAppConfigRepository, DSAppConfigClient>(); var loginViewModel = _container.Resolve <ILoginViewModel>(); var baseUrlHash = loginViewModel.CurrentUser.BaseUrl.ToLower().GetHashCode().ToString(); var repositoryFactory = _container.Resolve <IRepositoryFactory <IAppConfigRepository> >(); var localElements = new XmlElementRepository(Path.Combine(Path.GetTempPath(), "VirtoCommerceCMLocalization", baseUrlHash)); var cachedElements = new CacheElementRepository(localElements); var _elementRepository = new CachedDatabaseElementRepository(repositoryFactory, cachedElements, GetDefaultFilter()); _container.RegisterInstance <IElementRepository>(_elementRepository); // check cache date and update if needed var repository = _container.Resolve <IAppConfigRepository>(); var lastItem = repository.Localizations.OrderByDescending(x => x.LastModified).Take(1).FirstOrDefault(); DateTime?dbDate = lastItem == null ? null : lastItem.LastModified; var cacheDate = _elementRepository.GetStatusDate(); if (dbDate.HasValue && dbDate > cacheDate) { _elementRepository.Clear(); // force Elements re-caching _elementRepository.Elements(); _elementRepository.SetStatusDate(dbDate.Value); } }
public static IElementRepository GetElementRepository(Site site) { var repository = site.ObjectCache().Get(cacheKey); if (repository == null) { repository = new CacheElementRepository(() => EngineContext.Current.Resolve<IElementRepositoryFactory>().CreateRepository(site)); site.ObjectCache().Add(cacheKey, repository, new System.Runtime.Caching.CacheItemPolicy() { SlidingExpiration = TimeSpan.Parse("00:30:00") }); } return (IElementRepository)repository; }