Fixes up dictionary and language repositories to have underlying simple get repositories since they support getting by id, unique id and string variations but we want to have native repository enabled caching for these items so these get methods now use private repositories based on these keys. Adds more tests, removes N+1 queries for languages and dictionary items. Removes RuntimeCacheProvider, we only want one type of cache, this simplifies things a lot.
This commit is contained in:
@@ -1,260 +1,238 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.Caching;
|
||||
using System.Threading;
|
||||
using System.Web;
|
||||
using Umbraco.Core.Models.EntityBase;
|
||||
//using System;
|
||||
//using System.Collections;
|
||||
//using System.Collections.Concurrent;
|
||||
//using System.Collections.Generic;
|
||||
//using System.Linq;
|
||||
//using System.Runtime.Caching;
|
||||
//using System.Threading;
|
||||
//using System.Web;
|
||||
//using Umbraco.Core.Models.EntityBase;
|
||||
|
||||
namespace Umbraco.Core.Persistence.Caching
|
||||
{
|
||||
//TODO: Remove this singleton!
|
||||
//namespace Umbraco.Core.Persistence.Caching
|
||||
//{
|
||||
// //TODO: Remove this singleton!
|
||||
|
||||
/// <summary>
|
||||
/// The Runtime Cache provider looks up objects in the Runtime cache for fast retrival
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
///
|
||||
/// If a web session is detected then the HttpRuntime.Cache will be used for the runtime cache, otherwise a custom
|
||||
/// MemoryCache instance will be used. It is important to use the HttpRuntime.Cache when a web session is detected so
|
||||
/// that the memory management of cache in IIS can be handled appopriately.
|
||||
///
|
||||
/// When a web sessions is detected we will pre-fix all HttpRuntime.Cache entries so that when we clear it we are only
|
||||
/// clearing items that have been inserted by this provider.
|
||||
///
|
||||
/// NOTE: These changes are all temporary until we finalize the ApplicationCache implementation which will support static cache, runtime cache
|
||||
/// and request based cache which will all live in one central location so it is easily managed.
|
||||
///
|
||||
/// Also note that we don't always keep checking if HttpContext.Current == null and instead check for _memoryCache != null. This is because
|
||||
/// when there are async requests being made even in the context of a web request, the HttpContext.Current will be null but the HttpRuntime.Cache will
|
||||
/// always be available.
|
||||
///
|
||||
/// TODO: Each item that get's added to this cache will be a clone of the original with it's dirty properties reset, and every item that is resolved from the cache
|
||||
/// is a clone of the item that is in there, otherwise we end up with thread safety issues since multiple thread would be working on the exact same entity at the same time.
|
||||
///
|
||||
/// </remarks>
|
||||
internal sealed class RuntimeCacheProvider : IRepositoryCacheProvider
|
||||
{
|
||||
#region Singleton
|
||||
// /// <summary>
|
||||
// /// The Runtime Cache provider looks up objects in the Runtime cache for fast retrival
|
||||
// /// </summary>
|
||||
// /// <remarks>
|
||||
// ///
|
||||
// /// If a web session is detected then the HttpRuntime.Cache will be used for the runtime cache, otherwise a custom
|
||||
// /// MemoryCache instance will be used. It is important to use the HttpRuntime.Cache when a web session is detected so
|
||||
// /// that the memory management of cache in IIS can be handled appopriately.
|
||||
// ///
|
||||
// /// When a web sessions is detected we will pre-fix all HttpRuntime.Cache entries so that when we clear it we are only
|
||||
// /// clearing items that have been inserted by this provider.
|
||||
// ///
|
||||
// /// NOTE: These changes are all temporary until we finalize the ApplicationCache implementation which will support static cache, runtime cache
|
||||
// /// and request based cache which will all live in one central location so it is easily managed.
|
||||
// ///
|
||||
// /// Also note that we don't always keep checking if HttpContext.Current == null and instead check for _memoryCache != null. This is because
|
||||
// /// when there are async requests being made even in the context of a web request, the HttpContext.Current will be null but the HttpRuntime.Cache will
|
||||
// /// always be available.
|
||||
// ///
|
||||
// /// </remarks>
|
||||
// internal sealed class RuntimeCacheProvider : IRepositoryCacheProvider
|
||||
// {
|
||||
// #region Singleton
|
||||
|
||||
private static readonly Lazy<RuntimeCacheProvider> lazy = new Lazy<RuntimeCacheProvider>(() => new RuntimeCacheProvider());
|
||||
// private static readonly Lazy<RuntimeCacheProvider> lazy = new Lazy<RuntimeCacheProvider>(() => new RuntimeCacheProvider());
|
||||
|
||||
public static RuntimeCacheProvider Current { get { return lazy.Value; } }
|
||||
// public static RuntimeCacheProvider Current { get { return lazy.Value; } }
|
||||
|
||||
//internal for testing! - though I'm not a huge fan of these being singletons!
|
||||
internal RuntimeCacheProvider()
|
||||
{
|
||||
if (HttpContext.Current == null)
|
||||
{
|
||||
_memoryCache = new MemoryCache("in-memory");
|
||||
}
|
||||
}
|
||||
// //internal for testing! - though I'm not a huge fan of these being singletons!
|
||||
// internal RuntimeCacheProvider()
|
||||
// {
|
||||
// if (HttpContext.Current == null)
|
||||
// {
|
||||
// _memoryCache = new MemoryCache("in-memory");
|
||||
// }
|
||||
// }
|
||||
|
||||
#endregion
|
||||
// #endregion
|
||||
|
||||
//TODO Save this in cache as well, so its not limited to a single server usage
|
||||
private readonly ConcurrentHashSet<string> _keyTracker = new ConcurrentHashSet<string>();
|
||||
private ObjectCache _memoryCache;
|
||||
private static readonly ReaderWriterLockSlim ClearLock = new ReaderWriterLockSlim();
|
||||
// //TODO Save this in cache as well, so its not limited to a single server usage
|
||||
// private readonly ConcurrentHashSet<string> _keyTracker = new ConcurrentHashSet<string>();
|
||||
// private ObjectCache _memoryCache;
|
||||
// private static readonly ReaderWriterLockSlim ClearLock = new ReaderWriterLockSlim();
|
||||
|
||||
public IEntity GetById(Type type, Guid id)
|
||||
{
|
||||
var key = GetCompositeId(type, id);
|
||||
var item = _memoryCache != null
|
||||
? _memoryCache.Get(key)
|
||||
: HttpRuntime.Cache.Get(key);
|
||||
var result = item as IEntity;
|
||||
if (result == null)
|
||||
{
|
||||
//ensure the key doesn't exist anymore in the tracker
|
||||
_keyTracker.Remove(key);
|
||||
return null;
|
||||
}
|
||||
// public IEntity GetById(Type type, Guid id)
|
||||
// {
|
||||
// var key = GetCompositeId(type, id);
|
||||
// var item = _memoryCache != null
|
||||
// ? _memoryCache.Get(key)
|
||||
// : HttpRuntime.Cache.Get(key);
|
||||
// var result = item as IEntity;
|
||||
// if (result == null)
|
||||
// {
|
||||
// //ensure the key doesn't exist anymore in the tracker
|
||||
// _keyTracker.Remove(key);
|
||||
// return null;
|
||||
// }
|
||||
|
||||
//IMPORTANT: we must clone to resolve, see: http://issues.umbraco.org/issue/U4-4259
|
||||
return (IEntity)result.DeepClone();
|
||||
}
|
||||
// //IMPORTANT: we must clone to resolve, see: http://issues.umbraco.org/issue/U4-4259
|
||||
// return (IEntity)result.DeepClone();
|
||||
// }
|
||||
|
||||
public IEnumerable<IEntity> GetByIds(Type type, List<Guid> ids)
|
||||
{
|
||||
var collection = new List<IEntity>();
|
||||
foreach (var guid in ids)
|
||||
{
|
||||
var key = GetCompositeId(type, guid);
|
||||
var item = _memoryCache != null
|
||||
? _memoryCache.Get(key)
|
||||
: HttpRuntime.Cache.Get(key);
|
||||
var result = item as IEntity;
|
||||
if (result == null)
|
||||
{
|
||||
//ensure the key doesn't exist anymore in the tracker
|
||||
_keyTracker.Remove(key);
|
||||
}
|
||||
else
|
||||
{
|
||||
//IMPORTANT: we must clone to resolve, see: http://issues.umbraco.org/issue/U4-4259
|
||||
collection.Add((IEntity)result.DeepClone());
|
||||
}
|
||||
}
|
||||
return collection;
|
||||
}
|
||||
// public IEnumerable<IEntity> GetByIds(Type type, List<Guid> ids)
|
||||
// {
|
||||
// var collection = new List<IEntity>();
|
||||
// foreach (var guid in ids)
|
||||
// {
|
||||
// var key = GetCompositeId(type, guid);
|
||||
// var item = _memoryCache != null
|
||||
// ? _memoryCache.Get(key)
|
||||
// : HttpRuntime.Cache.Get(key);
|
||||
// var result = item as IEntity;
|
||||
// if (result == null)
|
||||
// {
|
||||
// //ensure the key doesn't exist anymore in the tracker
|
||||
// _keyTracker.Remove(key);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// //IMPORTANT: we must clone to resolve, see: http://issues.umbraco.org/issue/U4-4259
|
||||
// collection.Add((IEntity)result.DeepClone());
|
||||
// }
|
||||
// }
|
||||
// return collection;
|
||||
// }
|
||||
|
||||
public IEnumerable<IEntity> GetAllByType(Type type)
|
||||
{
|
||||
var collection = new List<IEntity>();
|
||||
foreach (var key in _keyTracker)
|
||||
{
|
||||
if (key.StartsWith(string.Format("{0}{1}-", CacheItemPrefix, type.Name)))
|
||||
{
|
||||
var item = _memoryCache != null
|
||||
? _memoryCache.Get(key)
|
||||
: HttpRuntime.Cache.Get(key);
|
||||
// public IEnumerable<IEntity> GetAllByType(Type type)
|
||||
// {
|
||||
// var collection = new List<IEntity>();
|
||||
// foreach (var key in _keyTracker)
|
||||
// {
|
||||
// if (key.StartsWith(string.Format("{0}{1}-", CacheItemPrefix, type.Name)))
|
||||
// {
|
||||
// var item = _memoryCache != null
|
||||
// ? _memoryCache.Get(key)
|
||||
// : HttpRuntime.Cache.Get(key);
|
||||
|
||||
var result = item as IEntity;
|
||||
if (result == null)
|
||||
{
|
||||
//ensure the key doesn't exist anymore in the tracker
|
||||
_keyTracker.Remove(key);
|
||||
}
|
||||
else
|
||||
{
|
||||
//IMPORTANT: we must clone to resolve, see: http://issues.umbraco.org/issue/U4-4259
|
||||
collection.Add((IEntity)result.DeepClone());
|
||||
}
|
||||
}
|
||||
}
|
||||
return collection;
|
||||
}
|
||||
// var result = item as IEntity;
|
||||
// if (result == null)
|
||||
// {
|
||||
// //ensure the key doesn't exist anymore in the tracker
|
||||
// _keyTracker.Remove(key);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// //IMPORTANT: we must clone to resolve, see: http://issues.umbraco.org/issue/U4-4259
|
||||
// collection.Add((IEntity)result.DeepClone());
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// return collection;
|
||||
// }
|
||||
|
||||
public void Save(Type type, IEntity entity)
|
||||
{
|
||||
//IMPORTANT: we must clone to store, see: http://issues.umbraco.org/issue/U4-4259
|
||||
var clone = (IEntity)entity.DeepClone();
|
||||
// public void Save(Type type, IEntity entity)
|
||||
// {
|
||||
// //IMPORTANT: we must clone to store, see: http://issues.umbraco.org/issue/U4-4259
|
||||
// var clone = (IEntity)entity.DeepClone();
|
||||
|
||||
var key = GetCompositeId(type, clone.Id);
|
||||
// var key = GetCompositeId(type, clone.Key);
|
||||
|
||||
_keyTracker.TryAdd(key);
|
||||
// _keyTracker.TryAdd(key);
|
||||
|
||||
//NOTE: Before we were checking if it already exists but the MemoryCache.Set handles this implicitly and does
|
||||
// an add or update, same goes for HttpRuntime.Cache.Insert.
|
||||
// //NOTE: Before we were checking if it already exists but the MemoryCache.Set handles this implicitly and does
|
||||
// // an add or update, same goes for HttpRuntime.Cache.Insert.
|
||||
|
||||
if (_memoryCache != null)
|
||||
{
|
||||
_memoryCache.Set(key, clone, new CacheItemPolicy { SlidingExpiration = TimeSpan.FromMinutes(5) });
|
||||
}
|
||||
else
|
||||
{
|
||||
HttpRuntime.Cache.Insert(key, clone, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(5));
|
||||
}
|
||||
}
|
||||
// if (_memoryCache != null)
|
||||
// {
|
||||
// _memoryCache.Set(key, clone, new CacheItemPolicy { SlidingExpiration = TimeSpan.FromMinutes(5) });
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// HttpRuntime.Cache.Insert(key, clone, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(5));
|
||||
// }
|
||||
// }
|
||||
|
||||
public void Delete(Type type, IEntity entity)
|
||||
{
|
||||
var key = GetCompositeId(type, entity.Id);
|
||||
if (_memoryCache != null)
|
||||
{
|
||||
_memoryCache.Remove(key);
|
||||
}
|
||||
else
|
||||
{
|
||||
HttpRuntime.Cache.Remove(key);
|
||||
}
|
||||
// public void Delete(Type type, IEntity entity)
|
||||
// {
|
||||
// var key = GetCompositeId(type, entity.Key);
|
||||
// if (_memoryCache != null)
|
||||
// {
|
||||
// _memoryCache.Remove(key);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// HttpRuntime.Cache.Remove(key);
|
||||
// }
|
||||
|
||||
_keyTracker.Remove(key);
|
||||
}
|
||||
// _keyTracker.Remove(key);
|
||||
// }
|
||||
|
||||
// /// <summary>
|
||||
// /// Clear cache by type
|
||||
// /// </summary>
|
||||
// /// <param name="type"></param>
|
||||
// public void Clear(Type type)
|
||||
// {
|
||||
// using (new WriteLock(ClearLock))
|
||||
// {
|
||||
// var keys = new string[_keyTracker.Count];
|
||||
// _keyTracker.CopyTo(keys, 0);
|
||||
// var keysToRemove = new List<string>();
|
||||
// foreach (var key in keys.Where(x => x.StartsWith(string.Format("{0}{1}-", CacheItemPrefix, type.Name))))
|
||||
// {
|
||||
// _keyTracker.Remove(key);
|
||||
// keysToRemove.Add(key);
|
||||
// }
|
||||
// foreach (var key in keysToRemove)
|
||||
// {
|
||||
// if (_memoryCache != null)
|
||||
// {
|
||||
// _memoryCache.Remove(key);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// HttpRuntime.Cache.Remove(key);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
public void Delete(Type type, int entityId)
|
||||
{
|
||||
var key = GetCompositeId(type, entityId);
|
||||
if (_memoryCache != null)
|
||||
{
|
||||
_memoryCache.Remove(key);
|
||||
}
|
||||
else
|
||||
{
|
||||
HttpRuntime.Cache.Remove(key);
|
||||
}
|
||||
// public void Clear()
|
||||
// {
|
||||
// using (new WriteLock(ClearLock))
|
||||
// {
|
||||
// _keyTracker.Clear();
|
||||
|
||||
_keyTracker.Remove(key);
|
||||
}
|
||||
// ClearDataCache();
|
||||
// }
|
||||
// }
|
||||
|
||||
/// <summary>
|
||||
/// Clear cache by type
|
||||
/// </summary>
|
||||
/// <param name="type"></param>
|
||||
public void Clear(Type type)
|
||||
{
|
||||
using (new WriteLock(ClearLock))
|
||||
{
|
||||
var keys = new string[_keyTracker.Count];
|
||||
_keyTracker.CopyTo(keys, 0);
|
||||
var keysToRemove = new List<string>();
|
||||
foreach (var key in keys.Where(x => x.StartsWith(string.Format("{0}{1}-", CacheItemPrefix, type.Name))))
|
||||
{
|
||||
_keyTracker.Remove(key);
|
||||
keysToRemove.Add(key);
|
||||
}
|
||||
foreach (var key in keysToRemove)
|
||||
{
|
||||
if (_memoryCache != null)
|
||||
{
|
||||
_memoryCache.Remove(key);
|
||||
}
|
||||
else
|
||||
{
|
||||
HttpRuntime.Cache.Remove(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// //DO not call this unless it's for testing since it clears the data cached but not the keys
|
||||
// internal void ClearDataCache()
|
||||
// {
|
||||
// if (_memoryCache != null)
|
||||
// {
|
||||
// _memoryCache.DisposeIfDisposable();
|
||||
// _memoryCache = new MemoryCache("in-memory");
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// foreach (DictionaryEntry c in HttpRuntime.Cache)
|
||||
// {
|
||||
// if (c.Key is string && ((string)c.Key).InvariantStartsWith(CacheItemPrefix))
|
||||
// {
|
||||
// if (HttpRuntime.Cache[(string)c.Key] == null) return;
|
||||
// HttpRuntime.Cache.Remove((string)c.Key);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
using (new WriteLock(ClearLock))
|
||||
{
|
||||
_keyTracker.Clear();
|
||||
// /// <summary>
|
||||
// /// We prefix all cache keys with this so that we know which ones this class has created when
|
||||
// /// using the HttpRuntime cache so that when we clear it we don't clear other entries we didn't create.
|
||||
// /// </summary>
|
||||
// private const string CacheItemPrefix = "umbrtmche_";
|
||||
|
||||
ClearDataCache();
|
||||
}
|
||||
}
|
||||
// private string GetCompositeId(Type type, Guid id)
|
||||
// {
|
||||
// return string.Format("{0}{1}-{2}", CacheItemPrefix, type.Name, id);
|
||||
// }
|
||||
|
||||
//DO not call this unless it's for testing since it clears the data cached but not the keys
|
||||
internal void ClearDataCache()
|
||||
{
|
||||
if (_memoryCache != null)
|
||||
{
|
||||
_memoryCache.DisposeIfDisposable();
|
||||
_memoryCache = new MemoryCache("in-memory");
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (DictionaryEntry c in HttpRuntime.Cache)
|
||||
{
|
||||
if (c.Key is string && ((string)c.Key).InvariantStartsWith(CacheItemPrefix))
|
||||
{
|
||||
if (HttpRuntime.Cache[(string)c.Key] == null) return;
|
||||
HttpRuntime.Cache.Remove((string)c.Key);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// We prefix all cache keys with this so that we know which ones this class has created when
|
||||
/// using the HttpRuntime cache so that when we clear it we don't clear other entries we didn't create.
|
||||
/// </summary>
|
||||
private const string CacheItemPrefix = "umbrtmche_";
|
||||
|
||||
private string GetCompositeId(Type type, Guid id)
|
||||
{
|
||||
return string.Format("{0}{1}-{2}", CacheItemPrefix, type.Name, id);
|
||||
}
|
||||
|
||||
private string GetCompositeId(Type type, int id)
|
||||
{
|
||||
return string.Format("{0}{1}-{2}", CacheItemPrefix, type.Name, id.ToGuid());
|
||||
}
|
||||
}
|
||||
}
|
||||
// }
|
||||
//}
|
||||
@@ -16,7 +16,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
internal class ContentPreviewRepository<TContent> : PetaPocoRepositoryBase<int, ContentPreviewEntity<TContent>>
|
||||
where TContent : IContentBase
|
||||
{
|
||||
public ContentPreviewRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger)
|
||||
public ContentPreviewRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ using Umbraco.Core.Persistence.Caching;
|
||||
using Umbraco.Core.Persistence.DatabaseModelDefinitions;
|
||||
using Umbraco.Core.Persistence.Factories;
|
||||
using Umbraco.Core.Persistence.Querying;
|
||||
using Umbraco.Core.Cache;
|
||||
using Umbraco.Core.Persistence.SqlSyntax;
|
||||
using Umbraco.Core.Persistence.UnitOfWork;
|
||||
|
||||
@@ -35,8 +36,8 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
private readonly CacheHelper _cacheHelper;
|
||||
private readonly ContentPreviewRepository<IContent> _contentPreviewRepository;
|
||||
private readonly ContentXmlRepository<IContent> _contentXmlRepository;
|
||||
|
||||
public ContentRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger, IContentTypeRepository contentTypeRepository, ITemplateRepository templateRepository, ITagRepository tagRepository, CacheHelper cacheHelper)
|
||||
|
||||
public ContentRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, IContentTypeRepository contentTypeRepository, ITemplateRepository templateRepository, ITagRepository tagRepository, CacheHelper cacheHelper)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
if (contentTypeRepository == null) throw new ArgumentNullException("contentTypeRepository");
|
||||
@@ -46,8 +47,8 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
_templateRepository = templateRepository;
|
||||
_tagRepository = tagRepository;
|
||||
_cacheHelper = cacheHelper;
|
||||
_contentPreviewRepository = new ContentPreviewRepository<IContent>(work, NullCacheProvider.Current, logger);
|
||||
_contentXmlRepository = new ContentXmlRepository<IContent>(work, NullCacheProvider.Current, logger);
|
||||
_contentPreviewRepository = new ContentPreviewRepository<IContent>(work, CacheHelper.CreateDisabledCacheHelper(), logger);
|
||||
_contentXmlRepository = new ContentXmlRepository<IContent>(work, CacheHelper.CreateDisabledCacheHelper(), logger);
|
||||
|
||||
EnsureUniqueNaming = true;
|
||||
}
|
||||
@@ -590,10 +591,11 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
// then we can use that entity. Otherwise if it is not published (which can be the case
|
||||
// because we only store the 'latest' entries in the cache which might not be the published
|
||||
// version)
|
||||
var fromCache = TryGetFromCache(dto.NodeId);
|
||||
if (fromCache.Success && fromCache.Result.Published)
|
||||
var fromCache = RepositoryCache.RuntimeCache.GetCacheItem<IContent>(GetCacheIdKey<IContent>(dto.NodeId));
|
||||
//var fromCache = TryGetFromCache(dto.NodeId);
|
||||
if (fromCache != null && fromCache.Published)
|
||||
{
|
||||
yield return fromCache.Result;
|
||||
yield return fromCache;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -27,8 +27,8 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
internal abstract class ContentTypeBaseRepository<TEntity> : PetaPocoRepositoryBase<int, TEntity>
|
||||
where TEntity : class, IContentTypeComposition
|
||||
{
|
||||
|
||||
protected ContentTypeBaseRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger)
|
||||
|
||||
protected ContentTypeBaseRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
{
|
||||
private readonly ITemplateRepository _templateRepository;
|
||||
|
||||
public ContentTypeRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger, ITemplateRepository templateRepository)
|
||||
public ContentTypeRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ITemplateRepository templateRepository)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
_templateRepository = templateRepository;
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
internal class ContentXmlRepository<TContent> : PetaPocoRepositoryBase<int, ContentXmlEntity<TContent>>
|
||||
where TContent : IContentBase
|
||||
{
|
||||
public ContentXmlRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger)
|
||||
public ContentXmlRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -28,13 +28,13 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
private readonly IContentTypeRepository _contentTypeRepository;
|
||||
private readonly DataTypePreValueRepository _preValRepository;
|
||||
|
||||
public DataTypeDefinitionRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, CacheHelper cacheHelper, ILogger logger,
|
||||
public DataTypeDefinitionRepository(IDatabaseUnitOfWork work, CacheHelper cache, CacheHelper cacheHelper, ILogger logger,
|
||||
IContentTypeRepository contentTypeRepository)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
_cacheHelper = cacheHelper;
|
||||
_contentTypeRepository = contentTypeRepository;
|
||||
_preValRepository = new DataTypePreValueRepository(work, NullCacheProvider.Current, logger);
|
||||
_preValRepository = new DataTypePreValueRepository(work, CacheHelper.CreateDisabledCacheHelper(), logger);
|
||||
}
|
||||
|
||||
private readonly ReaderWriterLockSlim _locker = new ReaderWriterLockSlim();
|
||||
@@ -438,7 +438,7 @@ AND umbracoNode.id <> @id",
|
||||
/// </summary>
|
||||
private class DataTypePreValueRepository : PetaPocoRepositoryBase<int, PreValueEntity>
|
||||
{
|
||||
public DataTypePreValueRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger)
|
||||
public DataTypePreValueRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ using Umbraco.Core.Persistence.Caching;
|
||||
using Umbraco.Core.Persistence.Factories;
|
||||
using Umbraco.Core.Persistence.Querying;
|
||||
using Umbraco.Core.Persistence.Relators;
|
||||
using Umbraco.Core.Persistence.SqlSyntax;
|
||||
using Umbraco.Core.Persistence.UnitOfWork;
|
||||
|
||||
namespace Umbraco.Core.Persistence.Repositories
|
||||
@@ -18,13 +19,15 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
/// </summary>
|
||||
internal class DictionaryRepository : PetaPocoRepositoryBase<int, IDictionaryItem>, IDictionaryRepository
|
||||
{
|
||||
private readonly ISqlSyntaxProvider _syntaxProvider;
|
||||
private readonly ILanguageRepository _languageRepository;
|
||||
|
||||
public DictionaryRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger, ILanguageRepository languageRepository)
|
||||
|
||||
public DictionaryRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider syntaxProvider, ILanguageRepository languageRepository)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
_languageRepository = languageRepository;
|
||||
}
|
||||
{
|
||||
_syntaxProvider = syntaxProvider;
|
||||
_languageRepository = languageRepository;
|
||||
}
|
||||
|
||||
#region Overrides of RepositoryBase<int,DictionaryItem>
|
||||
|
||||
@@ -38,19 +41,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
if (dto == null)
|
||||
return null;
|
||||
|
||||
var factory = new DictionaryItemFactory();
|
||||
var entity = factory.BuildEntity(dto);
|
||||
|
||||
var list = new List<IDictionaryTranslation>();
|
||||
foreach (var textDto in dto.LanguageTextDtos)
|
||||
{
|
||||
var language = _languageRepository.Get(textDto.LanguageId);
|
||||
if (language == null)
|
||||
continue;
|
||||
var translationFactory = new DictionaryTranslationFactory(dto.UniqueId, language);
|
||||
list.Add(translationFactory.BuildEntity(textDto));
|
||||
}
|
||||
entity.Translations = list;
|
||||
var entity = ConvertFromDto(dto);
|
||||
|
||||
//on initial construction we don't want to have dirty properties tracked
|
||||
// http://issues.umbraco.org/issue/U4-1946
|
||||
@@ -61,21 +52,14 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
|
||||
protected override IEnumerable<IDictionaryItem> PerformGetAll(params int[] ids)
|
||||
{
|
||||
var sql = GetBaseQuery(false).Where("cmsDictionary.pk > 0");
|
||||
if (ids.Any())
|
||||
{
|
||||
foreach (var id in ids)
|
||||
{
|
||||
yield return Get(id);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var dtos = Database.Fetch<DictionaryDto>("WHERE pk > 0");
|
||||
foreach (var dto in dtos)
|
||||
{
|
||||
yield return Get(dto.PrimaryKey);
|
||||
}
|
||||
sql.Where("cmsDictionary.pk in (@ids)", new { ids = ids });
|
||||
}
|
||||
|
||||
return Database.Fetch<DictionaryDto, LanguageTextDto, DictionaryDto>(new DictionaryLanguageTextRelator().Map, sql)
|
||||
.Select(ConvertFromDto);
|
||||
}
|
||||
|
||||
protected override IEnumerable<IDictionaryItem> PerformGetByQuery(IQuery<IDictionaryItem> query)
|
||||
@@ -85,12 +69,8 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
var sql = translator.Translate();
|
||||
sql.OrderBy<DictionaryDto>(x => x.UniqueId);
|
||||
|
||||
var dtos = Database.Fetch<DictionaryDto, LanguageTextDto, DictionaryDto>(new DictionaryLanguageTextRelator().Map, sql);
|
||||
|
||||
foreach (var dto in dtos)
|
||||
{
|
||||
yield return Get(dto.PrimaryKey);
|
||||
}
|
||||
return Database.Fetch<DictionaryDto, LanguageTextDto, DictionaryDto>(new DictionaryLanguageTextRelator().Map, sql)
|
||||
.Select(ConvertFromDto);
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -189,6 +169,10 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
}
|
||||
|
||||
entity.ResetDirtyProperties();
|
||||
|
||||
//Clear the cache entries that exist by uniqueid/item key
|
||||
RepositoryCache.RuntimeCache.ClearCacheItem(GetCacheIdKey<IDictionaryItem>(entity.ItemKey));
|
||||
RepositoryCache.RuntimeCache.ClearCacheItem(GetCacheIdKey<IDictionaryItem>(entity.Key));
|
||||
}
|
||||
|
||||
protected override void PersistDeletedItem(IDictionaryItem entity)
|
||||
@@ -196,8 +180,11 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
RecursiveDelete(entity.Key);
|
||||
|
||||
Database.Delete<LanguageTextDto>("WHERE UniqueId = @Id", new { Id = entity.Key});
|
||||
|
||||
Database.Delete<DictionaryDto>("WHERE id = @Id", new { Id = entity.Key });
|
||||
|
||||
//Clear the cache entries that exist by uniqueid/item key
|
||||
RepositoryCache.RuntimeCache.ClearCacheItem(GetCacheIdKey<IDictionaryItem>(entity.ItemKey));
|
||||
RepositoryCache.RuntimeCache.ClearCacheItem(GetCacheIdKey<IDictionaryItem>(entity.Key));
|
||||
}
|
||||
|
||||
private void RecursiveDelete(Guid parentId)
|
||||
@@ -209,9 +196,126 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
|
||||
Database.Delete<LanguageTextDto>("WHERE UniqueId = @Id", new { Id = dto.UniqueId });
|
||||
Database.Delete<DictionaryDto>("WHERE id = @Id", new { Id = dto.UniqueId });
|
||||
|
||||
//Clear the cache entries that exist by uniqueid/item key
|
||||
RepositoryCache.RuntimeCache.ClearCacheItem(GetCacheIdKey<IDictionaryItem>(dto.Key));
|
||||
RepositoryCache.RuntimeCache.ClearCacheItem(GetCacheIdKey<IDictionaryItem>(dto.UniqueId));
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
protected IDictionaryItem ConvertFromDto(DictionaryDto dto)
|
||||
{
|
||||
var factory = new DictionaryItemFactory();
|
||||
var entity = factory.BuildEntity(dto);
|
||||
|
||||
var list = new List<IDictionaryTranslation>();
|
||||
foreach (var textDto in dto.LanguageTextDtos)
|
||||
{
|
||||
var language = _languageRepository.Get(textDto.LanguageId);
|
||||
if (language == null)
|
||||
continue;
|
||||
var translationFactory = new DictionaryTranslationFactory(dto.UniqueId, language);
|
||||
list.Add(translationFactory.BuildEntity(textDto));
|
||||
}
|
||||
entity.Translations = list;
|
||||
|
||||
return entity;
|
||||
}
|
||||
|
||||
public IDictionaryItem Get(Guid uniqueId)
|
||||
{
|
||||
var uniqueIdRepo = new DictionaryByUniqueIdRepository(this, UnitOfWork, RepositoryCache, Logger);
|
||||
return uniqueIdRepo.Get(uniqueId);
|
||||
}
|
||||
|
||||
public IDictionaryItem Get(string key)
|
||||
{
|
||||
var keyRepo = new DictionaryByKeyRepository(this, UnitOfWork, RepositoryCache, Logger);
|
||||
return keyRepo.Get(key);
|
||||
}
|
||||
|
||||
private class DictionaryByUniqueIdRepository : SimpleGetRepository<Guid, IDictionaryItem, DictionaryDto>
|
||||
{
|
||||
private readonly DictionaryRepository _dictionaryRepository;
|
||||
|
||||
public DictionaryByUniqueIdRepository(DictionaryRepository dictionaryRepository, IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
_dictionaryRepository = dictionaryRepository;
|
||||
}
|
||||
|
||||
protected override IEnumerable<DictionaryDto> PerformFetch(Sql sql)
|
||||
{
|
||||
return Database.Fetch<DictionaryDto, LanguageTextDto, DictionaryDto>(new DictionaryLanguageTextRelator().Map, sql);
|
||||
}
|
||||
|
||||
protected override Sql GetBaseQuery(bool isCount)
|
||||
{
|
||||
return _dictionaryRepository.GetBaseQuery(isCount);
|
||||
}
|
||||
|
||||
protected override string GetBaseWhereClause()
|
||||
{
|
||||
return "cmsDictionary.id = @Id";
|
||||
}
|
||||
|
||||
protected override IDictionaryItem ConvertToEntity(DictionaryDto dto)
|
||||
{
|
||||
return _dictionaryRepository.ConvertFromDto(dto);
|
||||
}
|
||||
|
||||
protected override object GetBaseWhereClauseArguments(Guid id)
|
||||
{
|
||||
return new {Id = id};
|
||||
}
|
||||
|
||||
protected override string GetWhereInClauseForGetAll()
|
||||
{
|
||||
return "cmsDictionary.id in (@ids)";
|
||||
}
|
||||
}
|
||||
|
||||
private class DictionaryByKeyRepository : SimpleGetRepository<string, IDictionaryItem, DictionaryDto>
|
||||
{
|
||||
private readonly DictionaryRepository _dictionaryRepository;
|
||||
|
||||
public DictionaryByKeyRepository(DictionaryRepository dictionaryRepository, IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
_dictionaryRepository = dictionaryRepository;
|
||||
}
|
||||
|
||||
protected override IEnumerable<DictionaryDto> PerformFetch(Sql sql)
|
||||
{
|
||||
return Database.Fetch<DictionaryDto, LanguageTextDto, DictionaryDto>(new DictionaryLanguageTextRelator().Map, sql);
|
||||
}
|
||||
|
||||
protected override Sql GetBaseQuery(bool isCount)
|
||||
{
|
||||
return _dictionaryRepository.GetBaseQuery(isCount);
|
||||
}
|
||||
|
||||
protected override string GetBaseWhereClause()
|
||||
{
|
||||
return "cmsDictionary." + _dictionaryRepository._syntaxProvider.GetQuotedColumnName("key") + " = @Id";
|
||||
}
|
||||
|
||||
protected override IDictionaryItem ConvertToEntity(DictionaryDto dto)
|
||||
{
|
||||
return _dictionaryRepository.ConvertFromDto(dto);
|
||||
}
|
||||
|
||||
protected override object GetBaseWhereClauseArguments(string id)
|
||||
{
|
||||
return new { Id = id };
|
||||
}
|
||||
|
||||
protected override string GetWhereInClauseForGetAll()
|
||||
{
|
||||
return "cmsDictionary." + _dictionaryRepository._syntaxProvider.GetQuotedColumnName("key") + " in (@ids)";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,11 @@
|
||||
using Umbraco.Core.Models;
|
||||
using System;
|
||||
using Umbraco.Core.Models;
|
||||
|
||||
namespace Umbraco.Core.Persistence.Repositories
|
||||
{
|
||||
public interface IDictionaryRepository : IRepositoryQueryable<int, IDictionaryItem>
|
||||
{
|
||||
|
||||
IDictionaryItem Get(Guid uniqueId);
|
||||
IDictionaryItem Get(string key);
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
{
|
||||
public interface ILanguageRepository : IRepositoryQueryable<int, ILanguage>
|
||||
{
|
||||
|
||||
ILanguage GetByCultureName(string cultureName);
|
||||
ILanguage GetByIsoCode(string isoCode);
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
/// </summary>
|
||||
internal class LanguageRepository : PetaPocoRepositoryBase<int, ILanguage>, ILanguageRepository
|
||||
{
|
||||
public LanguageRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger)
|
||||
public LanguageRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
}
|
||||
@@ -33,8 +33,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
if (languageDto == null)
|
||||
return null;
|
||||
|
||||
var factory = new LanguageFactory();
|
||||
var entity = factory.BuildEntity(languageDto);
|
||||
var entity = ConvertFromDto(languageDto);
|
||||
|
||||
//on initial construction we don't want to have dirty properties tracked
|
||||
// http://issues.umbraco.org/issue/U4-1946
|
||||
@@ -43,41 +42,23 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
return entity;
|
||||
}
|
||||
|
||||
//TODO: Fix this up so there is no N+1
|
||||
|
||||
protected override IEnumerable<ILanguage> PerformGetAll(params int[] ids)
|
||||
{
|
||||
var sql = GetBaseQuery(false).Where("umbracoLanguage.id > 0");
|
||||
if (ids.Any())
|
||||
{
|
||||
foreach (var id in ids)
|
||||
{
|
||||
yield return Get(id);
|
||||
}
|
||||
sql.Where("umbracoLanguage.id in (@ids)", new { ids = ids });
|
||||
}
|
||||
else
|
||||
{
|
||||
var dtos = Database.Fetch<LanguageDto>("WHERE id > 0");
|
||||
foreach (var dto in dtos)
|
||||
{
|
||||
yield return Get(dto.Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//TODO: Fix this up so there is no N+1
|
||||
return Database.Fetch<LanguageDto>(sql).Select(ConvertFromDto);
|
||||
}
|
||||
|
||||
protected override IEnumerable<ILanguage> PerformGetByQuery(IQuery<ILanguage> query)
|
||||
{
|
||||
var sqlClause = GetBaseQuery(false);
|
||||
var translator = new SqlTranslator<ILanguage>(sqlClause, query);
|
||||
var sql = translator.Translate();
|
||||
|
||||
var dtos = Database.Fetch<LanguageDto>(sql);
|
||||
|
||||
foreach (var dto in dtos)
|
||||
{
|
||||
yield return Get(dto.Id);
|
||||
}
|
||||
return Database.Fetch<LanguageDto>(sql).Select(ConvertFromDto);
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -99,7 +80,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
|
||||
protected override IEnumerable<string> GetDeleteClauses()
|
||||
{
|
||||
|
||||
|
||||
var list = new List<string>
|
||||
{
|
||||
//NOTE: There is no constraint between the Language and cmsDictionary/cmsLanguageText tables (?)
|
||||
@@ -142,8 +123,117 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
Database.Update(dto);
|
||||
|
||||
entity.ResetDirtyProperties();
|
||||
|
||||
//Clear the cache entries that exist by key/iso
|
||||
RepositoryCache.RuntimeCache.ClearCacheItem(GetCacheIdKey<ILanguage>(entity.IsoCode));
|
||||
RepositoryCache.RuntimeCache.ClearCacheItem(GetCacheIdKey<ILanguage>(entity.CultureName));
|
||||
}
|
||||
|
||||
protected override void PersistDeletedItem(ILanguage entity)
|
||||
{
|
||||
base.PersistDeletedItem(entity);
|
||||
|
||||
//Clear the cache entries that exist by key/iso
|
||||
RepositoryCache.RuntimeCache.ClearCacheItem(GetCacheIdKey<ILanguage>(entity.IsoCode));
|
||||
RepositoryCache.RuntimeCache.ClearCacheItem(GetCacheIdKey<ILanguage>(entity.CultureName));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
protected ILanguage ConvertFromDto(LanguageDto dto)
|
||||
{
|
||||
var factory = new LanguageFactory();
|
||||
var entity = factory.BuildEntity(dto);
|
||||
return entity;
|
||||
}
|
||||
|
||||
public ILanguage GetByCultureName(string cultureName)
|
||||
{
|
||||
var cultureNameRepo = new LanguageByCultureNameRepository(this, UnitOfWork, RepositoryCache, Logger);
|
||||
return cultureNameRepo.Get(cultureName);
|
||||
}
|
||||
|
||||
public ILanguage GetByIsoCode(string isoCode)
|
||||
{
|
||||
var isoRepo = new LanguageByIsoCodeRepository(this, UnitOfWork, RepositoryCache, Logger);
|
||||
return isoRepo.Get(isoCode);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Inner repository for looking up languages by ISO code, this deals with caching by a string key
|
||||
/// </summary>
|
||||
private class LanguageByIsoCodeRepository : SimpleGetRepository<string, ILanguage, LanguageDto>
|
||||
{
|
||||
private readonly LanguageRepository _languageRepository;
|
||||
|
||||
public LanguageByIsoCodeRepository(LanguageRepository languageRepository, IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
_languageRepository = languageRepository;
|
||||
}
|
||||
|
||||
protected override Sql GetBaseQuery(bool isCount)
|
||||
{
|
||||
return _languageRepository.GetBaseQuery(isCount);
|
||||
}
|
||||
|
||||
protected override string GetBaseWhereClause()
|
||||
{
|
||||
return "umbracoLanguage.languageISOCode = @Id";
|
||||
}
|
||||
|
||||
protected override ILanguage ConvertToEntity(LanguageDto dto)
|
||||
{
|
||||
var factory = new LanguageFactory();
|
||||
return factory.BuildEntity(dto);
|
||||
}
|
||||
|
||||
protected override object GetBaseWhereClauseArguments(string id)
|
||||
{
|
||||
return new {Id = id};
|
||||
}
|
||||
|
||||
protected override string GetWhereInClauseForGetAll()
|
||||
{
|
||||
return "umbracoLanguage.languageISOCode in (@ids)";
|
||||
}
|
||||
}
|
||||
|
||||
private class LanguageByCultureNameRepository : SimpleGetRepository<string, ILanguage, LanguageDto>
|
||||
{
|
||||
private readonly LanguageRepository _languageRepository;
|
||||
|
||||
public LanguageByCultureNameRepository(LanguageRepository languageRepository, IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
_languageRepository = languageRepository;
|
||||
}
|
||||
|
||||
protected override Sql GetBaseQuery(bool isCount)
|
||||
{
|
||||
return _languageRepository.GetBaseQuery(isCount);
|
||||
}
|
||||
|
||||
protected override string GetBaseWhereClause()
|
||||
{
|
||||
return "umbracoLanguage.languageCultureName = @Id";
|
||||
}
|
||||
|
||||
protected override ILanguage ConvertToEntity(LanguageDto dto)
|
||||
{
|
||||
var factory = new LanguageFactory();
|
||||
return factory.BuildEntity(dto);
|
||||
}
|
||||
|
||||
protected override object GetBaseWhereClauseArguments(string id)
|
||||
{
|
||||
return new {Id = id};
|
||||
}
|
||||
|
||||
protected override string GetWhereInClauseForGetAll()
|
||||
{
|
||||
return "umbracoLanguage.languageCultureName in (@ids)";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -16,8 +16,8 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
{
|
||||
internal class MacroRepository : PetaPocoRepositoryBase<int, IMacro>, IMacroRepository
|
||||
{
|
||||
|
||||
public MacroRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger)
|
||||
|
||||
public MacroRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -31,15 +31,15 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
private readonly ContentXmlRepository<IMedia> _contentXmlRepository;
|
||||
private readonly ContentPreviewRepository<IMedia> _contentPreviewRepository;
|
||||
|
||||
public MediaRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger, IMediaTypeRepository mediaTypeRepository, ITagRepository tagRepository)
|
||||
public MediaRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, IMediaTypeRepository mediaTypeRepository, ITagRepository tagRepository)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
if (mediaTypeRepository == null) throw new ArgumentNullException("mediaTypeRepository");
|
||||
if (tagRepository == null) throw new ArgumentNullException("tagRepository");
|
||||
_mediaTypeRepository = mediaTypeRepository;
|
||||
_tagRepository = tagRepository;
|
||||
_contentXmlRepository = new ContentXmlRepository<IMedia>(work, NullCacheProvider.Current, logger);
|
||||
_contentPreviewRepository = new ContentPreviewRepository<IMedia>(work, NullCacheProvider.Current, logger);
|
||||
_contentXmlRepository = new ContentXmlRepository<IMedia>(work, CacheHelper.CreateDisabledCacheHelper(), logger);
|
||||
_contentPreviewRepository = new ContentPreviewRepository<IMedia>(work, CacheHelper.CreateDisabledCacheHelper(), logger);
|
||||
EnsureUniqueNaming = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -17,8 +17,8 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
/// </summary>
|
||||
internal class MediaTypeRepository : ContentTypeBaseRepository<IMediaType>, IMediaTypeRepository
|
||||
{
|
||||
|
||||
public MediaTypeRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger)
|
||||
|
||||
public MediaTypeRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -21,8 +21,8 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
internal class MemberGroupRepository : PetaPocoRepositoryBase<int, IMemberGroup>, IMemberGroupRepository
|
||||
{
|
||||
private readonly CacheHelper _cacheHelper;
|
||||
|
||||
public MemberGroupRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger, CacheHelper cacheHelper)
|
||||
|
||||
public MemberGroupRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, CacheHelper cacheHelper)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
if (cacheHelper == null) throw new ArgumentNullException("cacheHelper");
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
private readonly ContentXmlRepository<IMember> _contentXmlRepository;
|
||||
private readonly ContentPreviewRepository<IMember> _contentPreviewRepository;
|
||||
|
||||
public MemberRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger, IMemberTypeRepository memberTypeRepository, IMemberGroupRepository memberGroupRepository, ITagRepository tagRepository)
|
||||
public MemberRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, IMemberTypeRepository memberTypeRepository, IMemberGroupRepository memberGroupRepository, ITagRepository tagRepository)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
if (memberTypeRepository == null) throw new ArgumentNullException("memberTypeRepository");
|
||||
@@ -41,8 +41,8 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
_memberTypeRepository = memberTypeRepository;
|
||||
_tagRepository = tagRepository;
|
||||
_memberGroupRepository = memberGroupRepository;
|
||||
_contentXmlRepository = new ContentXmlRepository<IMember>(work, NullCacheProvider.Current, logger);
|
||||
_contentPreviewRepository = new ContentPreviewRepository<IMember>(work, NullCacheProvider.Current, logger);
|
||||
_contentXmlRepository = new ContentXmlRepository<IMember>(work, CacheHelper.CreateDisabledCacheHelper(), logger);
|
||||
_contentPreviewRepository = new ContentPreviewRepository<IMember>(work, CacheHelper.CreateDisabledCacheHelper(), logger);
|
||||
}
|
||||
|
||||
#region Overrides of RepositoryBase<int, IMembershipUser>
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
internal class MemberTypeRepository : ContentTypeBaseRepository<IMemberType>, IMemberTypeRepository
|
||||
{
|
||||
|
||||
public MemberTypeRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger)
|
||||
public MemberTypeRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
where TEntity : class, IAggregateRoot
|
||||
{
|
||||
|
||||
protected PetaPocoRepositoryBase(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger)
|
||||
protected PetaPocoRepositoryBase(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
internal abstract class RecycleBinRepository<TId, TEntity> : VersionableRepositoryBase<TId, TEntity>, IRecycleBinRepository<TEntity>
|
||||
where TEntity : class, IUmbracoEntity
|
||||
{
|
||||
protected RecycleBinRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger)
|
||||
protected RecycleBinRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
{
|
||||
private readonly IRelationTypeRepository _relationTypeRepository;
|
||||
|
||||
public RelationRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger, IRelationTypeRepository relationTypeRepository)
|
||||
public RelationRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, IRelationTypeRepository relationTypeRepository)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
_relationTypeRepository = relationTypeRepository;
|
||||
@@ -50,6 +50,8 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
return entity;
|
||||
}
|
||||
|
||||
//TODO: Fix N+1 !
|
||||
|
||||
protected override IEnumerable<IRelation> PerformGetAll(params int[] ids)
|
||||
{
|
||||
if (ids.Any())
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
internal class RelationTypeRepository : PetaPocoRepositoryBase<int, IRelationType>, IRelationTypeRepository
|
||||
{
|
||||
|
||||
public RelationTypeRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger)
|
||||
public RelationTypeRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Umbraco.Core.Cache;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Models.EntityBase;
|
||||
using Umbraco.Core.Persistence.Caching;
|
||||
@@ -9,25 +10,17 @@ using Umbraco.Core.Persistence.UnitOfWork;
|
||||
|
||||
namespace Umbraco.Core.Persistence.Repositories
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Represent an abstract Repository, which is the base of the Repository implementations
|
||||
/// </summary>
|
||||
/// <typeparam name="TEntity">Type of <see cref="IAggregateRoot"/> entity for which the repository is used</typeparam>
|
||||
/// <typeparam name="TId">Type of the Id used for this entity</typeparam>
|
||||
internal abstract class RepositoryBase<TId, TEntity> : DisposableObject, IRepositoryQueryable<TId, TEntity>, IUnitOfWorkRepository
|
||||
where TEntity : class, IAggregateRoot
|
||||
internal abstract class RepositoryBase : DisposableObject
|
||||
{
|
||||
protected ILogger Logger { get; private set; }
|
||||
|
||||
private readonly IUnitOfWork _work;
|
||||
private readonly IRepositoryCacheProvider _cache;
|
||||
private readonly CacheHelper _cache;
|
||||
|
||||
protected RepositoryBase(IUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger)
|
||||
protected RepositoryBase(IUnitOfWork work, CacheHelper cache, ILogger logger)
|
||||
{
|
||||
Logger = logger;
|
||||
if (work == null) throw new ArgumentNullException("work");
|
||||
if (cache == null) throw new ArgumentNullException("cache");
|
||||
if (logger == null) throw new ArgumentNullException("logger");
|
||||
Logger = logger;
|
||||
_work = work;
|
||||
_cache = cache;
|
||||
}
|
||||
@@ -48,6 +41,37 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
get { return (Guid)_work.Key; }
|
||||
}
|
||||
|
||||
protected CacheHelper RepositoryCache
|
||||
{
|
||||
get { return _cache; }
|
||||
}
|
||||
|
||||
public static string GetCacheIdKey<T>(object id)
|
||||
{
|
||||
return string.Format("{0}{1}", GetCacheTypeKey<T>(), id);
|
||||
}
|
||||
|
||||
public static string GetCacheTypeKey<T>()
|
||||
{
|
||||
return string.Format("uRepo_{0}_", typeof(T).Name);
|
||||
}
|
||||
|
||||
protected ILogger Logger { get; private set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Represent an abstract Repository, which is the base of the Repository implementations
|
||||
/// </summary>
|
||||
/// <typeparam name="TEntity">Type of <see cref="IAggregateRoot"/> entity for which the repository is used</typeparam>
|
||||
/// <typeparam name="TId">Type of the Id used for this entity</typeparam>
|
||||
internal abstract class RepositoryBase<TId, TEntity> : RepositoryBase, IRepositoryQueryable<TId, TEntity>, IUnitOfWorkRepository
|
||||
where TEntity : class, IAggregateRoot
|
||||
{
|
||||
protected RepositoryBase(IUnitOfWork work, CacheHelper cache, ILogger logger)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
}
|
||||
|
||||
#region IRepository<TEntity> Members
|
||||
|
||||
/// <summary>
|
||||
@@ -59,11 +83,11 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
{
|
||||
if (entity.HasIdentity == false)
|
||||
{
|
||||
_work.RegisterAdded(entity, this);
|
||||
UnitOfWork.RegisterAdded(entity, this);
|
||||
}
|
||||
else
|
||||
{
|
||||
_work.RegisterChanged(entity, this);
|
||||
UnitOfWork.RegisterChanged(entity, this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,9 +97,9 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
/// <param name="entity"></param>
|
||||
public virtual void Delete(TEntity entity)
|
||||
{
|
||||
if (_work != null)
|
||||
if (UnitOfWork != null)
|
||||
{
|
||||
_work.RegisterRemoved(entity, this);
|
||||
UnitOfWork.RegisterRemoved(entity, this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,42 +111,33 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
/// <returns></returns>
|
||||
public TEntity Get(TId id)
|
||||
{
|
||||
var fromCache = TryGetFromCache(id);
|
||||
if (fromCache.Success)
|
||||
{
|
||||
return fromCache.Result;
|
||||
}
|
||||
|
||||
var entity = PerformGet(id);
|
||||
if (entity != null)
|
||||
{
|
||||
_cache.Save(typeof(TEntity), entity);
|
||||
}
|
||||
|
||||
if (entity != null)
|
||||
{
|
||||
//on initial construction we don't want to have dirty properties tracked
|
||||
// http://issues.umbraco.org/issue/U4-1946
|
||||
var asEntity = entity as TracksChangesEntityBase;
|
||||
if (asEntity != null)
|
||||
return RepositoryCache.RuntimeCache.GetCacheItem<TEntity>(
|
||||
GetCacheIdKey<TEntity>(id), () =>
|
||||
{
|
||||
asEntity.ResetDirtyProperties(false);
|
||||
}
|
||||
}
|
||||
|
||||
return entity;
|
||||
var entity = PerformGet(id);
|
||||
if (entity == null) return null;
|
||||
//on initial construction we don't want to have dirty properties tracked
|
||||
// http://issues.umbraco.org/issue/U4-1946
|
||||
var asEntity = entity as TracksChangesEntityBase;
|
||||
if (asEntity != null)
|
||||
{
|
||||
asEntity.ResetDirtyProperties(false);
|
||||
}
|
||||
return entity;
|
||||
});
|
||||
}
|
||||
|
||||
protected Attempt<TEntity> TryGetFromCache(TId id)
|
||||
{
|
||||
Guid key = id is int ? ConvertIdToGuid(id) : ConvertStringIdToGuid(id.ToString());
|
||||
var rEntity = _cache.GetById(typeof(TEntity), key);
|
||||
if (rEntity != null)
|
||||
{
|
||||
return Attempt.Succeed((TEntity)rEntity);
|
||||
}
|
||||
return Attempt<TEntity>.Fail();
|
||||
}
|
||||
|
||||
//protected Attempt<TEntity> TryGetFromCache(TId id)
|
||||
//{
|
||||
// Guid key = id is int ? ConvertIdToGuid(id) : ConvertStringIdToGuid(id.ToString());
|
||||
// var rEntity = RepositoryCache.GetById(typeof(TEntity), key);
|
||||
// if (rEntity != null)
|
||||
// {
|
||||
// return Attempt.Succeed((TEntity)rEntity);
|
||||
// }
|
||||
// return Attempt<TEntity>.Fail();
|
||||
//}
|
||||
|
||||
protected abstract IEnumerable<TEntity> PerformGetAll(params TId[] ids);
|
||||
/// <summary>
|
||||
@@ -146,16 +161,20 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
|
||||
if (ids.Any())
|
||||
{
|
||||
var entities = _cache.GetByIds(
|
||||
typeof(TEntity), ids.Select(id => id is int ? ConvertIdToGuid(id) : ConvertStringIdToGuid(id.ToString())).ToList())
|
||||
.ToArray();
|
||||
var entities = ids.Select(x => RepositoryCache.RuntimeCache.GetCacheItem<TEntity>(GetCacheIdKey<TEntity>(x))).ToArray();
|
||||
|
||||
//var entities = RepositoryCache.GetByIds(
|
||||
// typeof(TEntity), ids.Select(id => id is int ? ConvertIdToGuid(id) : ConvertStringIdToGuid(id.ToString())).ToList())
|
||||
// .ToArray();
|
||||
|
||||
if (ids.Count().Equals(entities.Count()) && entities.Any(x => x == null) == false)
|
||||
return entities.Select(x => (TEntity)x);
|
||||
}
|
||||
else
|
||||
{
|
||||
var allEntities = _cache.GetAllByType(typeof(TEntity)).ToArray();
|
||||
var allEntities = RepositoryCache.RuntimeCache.GetCacheItemsByKeySearch<TEntity>(GetCacheTypeKey<TEntity>()).ToArray();
|
||||
|
||||
//var allEntities = RepositoryCache.GetAllByType(typeof(TEntity)).ToArray();
|
||||
|
||||
if (allEntities.Any())
|
||||
{
|
||||
@@ -183,7 +202,9 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
{
|
||||
if (entity != null)
|
||||
{
|
||||
_cache.Save(typeof(TEntity), entity);
|
||||
var localCopy = entity;
|
||||
RepositoryCache.RuntimeCache.InsertCacheItem(GetCacheIdKey<TEntity>(entity.Id), () => localCopy);
|
||||
//RepositoryCache.Save(typeof(TEntity), entity);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -211,11 +232,16 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
/// <returns></returns>
|
||||
public bool Exists(TId id)
|
||||
{
|
||||
var fromCache = TryGetFromCache(id);
|
||||
if (fromCache.Success)
|
||||
var fromCache = RepositoryCache.RuntimeCache.GetCacheItem<TEntity>(GetCacheIdKey<TEntity>(id));
|
||||
if (fromCache != null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
//var fromCache = TryGetFromCache(id);
|
||||
//if (fromCache.Success)
|
||||
//{
|
||||
// return true;
|
||||
//}
|
||||
return PerformExists(id);
|
||||
}
|
||||
|
||||
@@ -243,13 +269,15 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
try
|
||||
{
|
||||
PersistNewItem((TEntity)entity);
|
||||
_cache.Save(typeof(TEntity), entity);
|
||||
RepositoryCache.RuntimeCache.InsertCacheItem(GetCacheIdKey<TEntity>(entity.Id), () => entity);
|
||||
//RepositoryCache.Save(typeof(TEntity), entity);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//if an exception is thrown we need to remove the entry from cache, this is ONLY a work around because of the way
|
||||
// that we cache entities: http://issues.umbraco.org/issue/U4-4259
|
||||
_cache.Delete(typeof(TEntity), entity);
|
||||
//RepositoryCache.Delete(typeof(TEntity), entity);
|
||||
RepositoryCache.RuntimeCache.ClearCacheItem(GetCacheIdKey<TEntity>(entity.Id));
|
||||
throw;
|
||||
}
|
||||
|
||||
@@ -264,13 +292,15 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
try
|
||||
{
|
||||
PersistUpdatedItem((TEntity)entity);
|
||||
_cache.Save(typeof(TEntity), entity);
|
||||
RepositoryCache.RuntimeCache.InsertCacheItem(GetCacheIdKey<TEntity>(entity.Id), () => entity);
|
||||
//RepositoryCache.Save(typeof(TEntity), entity);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//if an exception is thrown we need to remove the entry from cache, this is ONLY a work around because of the way
|
||||
// that we cache entities: http://issues.umbraco.org/issue/U4-4259
|
||||
_cache.Delete(typeof(TEntity), entity);
|
||||
//RepositoryCache.Delete(typeof(TEntity), entity);
|
||||
RepositoryCache.RuntimeCache.ClearCacheItem(GetCacheIdKey<TEntity>(entity.Id));
|
||||
throw;
|
||||
}
|
||||
|
||||
@@ -283,7 +313,8 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
public virtual void PersistDeletedItem(IEntity entity)
|
||||
{
|
||||
PersistDeletedItem((TEntity)entity);
|
||||
_cache.Delete(typeof(TEntity), entity);
|
||||
//RepositoryCache.Delete(typeof(TEntity), entity);
|
||||
RepositoryCache.RuntimeCache.ClearCacheItem(GetCacheIdKey<TEntity>(entity.Id));
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -296,29 +327,29 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Internal method that handles the convertion of an object Id
|
||||
/// to an Integer and then a Guid Id.
|
||||
/// </summary>
|
||||
/// <remarks>In the future it should be possible to change this method
|
||||
/// so it converts from object to guid if/when we decide to go from
|
||||
/// int to guid based ids.</remarks>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
protected virtual Guid ConvertIdToGuid(TId id)
|
||||
{
|
||||
int i = 0;
|
||||
if (int.TryParse(id.ToString(), out i))
|
||||
{
|
||||
return i.ToGuid();
|
||||
}
|
||||
return ConvertStringIdToGuid(id.ToString());
|
||||
}
|
||||
///// <summary>
|
||||
///// Internal method that handles the convertion of an object Id
|
||||
///// to an Integer and then a Guid Id.
|
||||
///// </summary>
|
||||
///// <remarks>In the future it should be possible to change this method
|
||||
///// so it converts from object to guid if/when we decide to go from
|
||||
///// int to guid based ids.</remarks>
|
||||
///// <param name="id"></param>
|
||||
///// <returns></returns>
|
||||
//protected virtual Guid ConvertIdToGuid(TId id)
|
||||
//{
|
||||
// int i = 0;
|
||||
// if (int.TryParse(id.ToString(), out i))
|
||||
// {
|
||||
// return i.ToGuid();
|
||||
// }
|
||||
// return ConvertStringIdToGuid(id.ToString());
|
||||
//}
|
||||
|
||||
protected virtual Guid ConvertStringIdToGuid(string id)
|
||||
{
|
||||
return id.EncodeAsGuid();
|
||||
}
|
||||
//protected virtual Guid ConvertStringIdToGuid(string id)
|
||||
//{
|
||||
// return id.EncodeAsGuid();
|
||||
//}
|
||||
|
||||
/// <summary>
|
||||
/// Dispose disposable properties
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
{
|
||||
internal class ServerRegistrationRepository : PetaPocoRepositoryBase<int, ServerRegistration>
|
||||
{
|
||||
public ServerRegistrationRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger)
|
||||
public ServerRegistrationRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Models.EntityBase;
|
||||
using Umbraco.Core.Persistence.Caching;
|
||||
using Umbraco.Core.Persistence.Querying;
|
||||
using Umbraco.Core.Persistence.UnitOfWork;
|
||||
|
||||
namespace Umbraco.Core.Persistence.Repositories
|
||||
{
|
||||
/// <summary>
|
||||
/// Simple abstract ReadOnly repository used to simply have PerformGet and PeformGetAll with an underlying cache
|
||||
/// </summary>
|
||||
internal abstract class SimpleGetRepository<TId, TEntity, TDto> : PetaPocoRepositoryBase<TId, TEntity>
|
||||
where TEntity : class, IAggregateRoot
|
||||
where TDto: class
|
||||
{
|
||||
|
||||
protected SimpleGetRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
}
|
||||
|
||||
protected abstract TEntity ConvertToEntity(TDto dto);
|
||||
protected abstract object GetBaseWhereClauseArguments(TId id);
|
||||
protected abstract string GetWhereInClauseForGetAll();
|
||||
|
||||
protected virtual IEnumerable<TDto> PerformFetch(Sql sql)
|
||||
{
|
||||
return Database.Fetch<TDto>(sql);
|
||||
}
|
||||
|
||||
protected override TEntity PerformGet(TId id)
|
||||
{
|
||||
var sql = GetBaseQuery(false);
|
||||
sql.Where(GetBaseWhereClause(), GetBaseWhereClauseArguments(id));
|
||||
|
||||
var dto = PerformFetch(sql).FirstOrDefault();
|
||||
if (dto == null)
|
||||
return null;
|
||||
|
||||
var entity = ConvertToEntity(dto);
|
||||
|
||||
var dirtyEntity = entity as Entity;
|
||||
if (dirtyEntity != null)
|
||||
{
|
||||
//on initial construction we don't want to have dirty properties tracked
|
||||
// http://issues.umbraco.org/issue/U4-1946
|
||||
dirtyEntity.ResetDirtyProperties(false);
|
||||
}
|
||||
|
||||
return entity;
|
||||
}
|
||||
|
||||
protected override IEnumerable<TEntity> PerformGetAll(params TId[] ids)
|
||||
{
|
||||
var sql = new Sql().From<TEntity>();
|
||||
|
||||
if (ids.Any())
|
||||
{
|
||||
sql.Where(GetWhereInClauseForGetAll(), new { ids = ids });
|
||||
}
|
||||
|
||||
return Database.Fetch<TDto>(sql).Select(ConvertToEntity);
|
||||
}
|
||||
|
||||
protected override sealed IEnumerable<TEntity> PerformGetByQuery(IQuery<TEntity> query)
|
||||
{
|
||||
var sqlClause = GetBaseQuery(false);
|
||||
var translator = new SqlTranslator<TEntity>(sqlClause, query);
|
||||
var sql = translator.Translate();
|
||||
return Database.Fetch<TDto>(sql).Select(ConvertToEntity);
|
||||
}
|
||||
|
||||
#region Not implemented and not required
|
||||
|
||||
protected override sealed IEnumerable<string> GetDeleteClauses()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
protected override sealed Guid NodeObjectTypeId
|
||||
{
|
||||
get { throw new NotImplementedException(); }
|
||||
}
|
||||
|
||||
protected override sealed void PersistNewItem(TEntity entity)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
protected override sealed void PersistUpdatedItem(TEntity entity)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
{
|
||||
internal class TagRepository : PetaPocoRepositoryBase<int, ITag>, ITagRepository
|
||||
{
|
||||
internal TagRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger)
|
||||
internal TagRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
private readonly ViewHelper _viewHelper;
|
||||
private readonly MasterPageHelper _masterPageHelper;
|
||||
|
||||
internal TemplateRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger, IFileSystem masterpageFileSystem, IFileSystem viewFileSystem, ITemplatesSection templateConfig)
|
||||
internal TemplateRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, IFileSystem masterpageFileSystem, IFileSystem viewFileSystem, ITemplatesSection templateConfig)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
_masterpagesFileSystem = masterpageFileSystem;
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
private readonly IUserTypeRepository _userTypeRepository;
|
||||
private readonly CacheHelper _cacheHelper;
|
||||
|
||||
public UserRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger, IUserTypeRepository userTypeRepository, CacheHelper cacheHelper)
|
||||
public UserRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, IUserTypeRepository userTypeRepository, CacheHelper cacheHelper)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
_userTypeRepository = userTypeRepository;
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
/// </summary>
|
||||
internal class UserTypeRepository : PetaPocoRepositoryBase<int, IUserType>, IUserTypeRepository
|
||||
{
|
||||
public UserTypeRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger)
|
||||
public UserTypeRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -22,8 +22,8 @@ namespace Umbraco.Core.Persistence.Repositories
|
||||
internal abstract class VersionableRepositoryBase<TId, TEntity> : PetaPocoRepositoryBase<TId, TEntity>
|
||||
where TEntity : class, IAggregateRoot
|
||||
{
|
||||
|
||||
protected VersionableRepositoryBase(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache, ILogger logger)
|
||||
|
||||
protected VersionableRepositoryBase(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger)
|
||||
: base(work, cache, logger)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ using Umbraco.Core.IO;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Persistence.Caching;
|
||||
using Umbraco.Core.Persistence.Repositories;
|
||||
using Umbraco.Core.Persistence.SqlSyntax;
|
||||
using Umbraco.Core.Persistence.UnitOfWork;
|
||||
|
||||
namespace Umbraco.Core.Persistence
|
||||
@@ -14,62 +15,50 @@ namespace Umbraco.Core.Persistence
|
||||
/// </summary>
|
||||
public class RepositoryFactory
|
||||
{
|
||||
private readonly bool _disableAllCache;
|
||||
private readonly ILogger _logger;
|
||||
private readonly ISqlSyntaxProvider _sqlSyntax;
|
||||
private readonly CacheHelper _cacheHelper;
|
||||
private readonly IUmbracoSettingsSection _settings;
|
||||
|
||||
#region Ctors
|
||||
|
||||
public RepositoryFactory(CacheHelper cacheHelper, ILogger logger, IUmbracoSettingsSection settings)
|
||||
public RepositoryFactory(CacheHelper cacheHelper, ILogger logger, ISqlSyntaxProvider sqlSyntax, IUmbracoSettingsSection settings)
|
||||
{
|
||||
if (cacheHelper == null) throw new ArgumentNullException("cacheHelper");
|
||||
if (logger == null) throw new ArgumentNullException("logger");
|
||||
if (sqlSyntax == null) throw new ArgumentNullException("sqlSyntax");
|
||||
if (settings == null) throw new ArgumentNullException("settings");
|
||||
_disableAllCache = false;
|
||||
|
||||
_cacheHelper = cacheHelper;
|
||||
_logger = logger;
|
||||
_sqlSyntax = sqlSyntax;
|
||||
_settings = settings;
|
||||
}
|
||||
|
||||
public RepositoryFactory(bool disableAllCache, ILogger logger, IUmbracoSettingsSection settings)
|
||||
{
|
||||
if (logger == null) throw new ArgumentNullException("logger");
|
||||
if (settings == null) throw new ArgumentNullException("settings");
|
||||
_disableAllCache = disableAllCache;
|
||||
_logger = logger;
|
||||
_settings = settings;
|
||||
_cacheHelper = _disableAllCache ? CacheHelper.CreateDisabledCacheHelper() : ApplicationContext.Current.ApplicationCache;
|
||||
}
|
||||
|
||||
[Obsolete("Use the ctor specifying all dependencies instead")]
|
||||
public RepositoryFactory()
|
||||
: this(false, LoggerResolver.Current.Logger, UmbracoConfig.For.UmbracoSettings())
|
||||
: this(ApplicationContext.Current.ApplicationCache, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider, UmbracoConfig.For.UmbracoSettings())
|
||||
{
|
||||
}
|
||||
|
||||
[Obsolete("Use the ctor specifying an ILogger instead")]
|
||||
[Obsolete("Use the ctor specifying all dependencies instead")]
|
||||
public RepositoryFactory(CacheHelper cacheHelper)
|
||||
: this(false, LoggerResolver.Current.Logger, UmbracoConfig.For.UmbracoSettings())
|
||||
: this(cacheHelper, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider, UmbracoConfig.For.UmbracoSettings())
|
||||
{
|
||||
if (cacheHelper == null) throw new ArgumentNullException("cacheHelper");
|
||||
_disableAllCache = false;
|
||||
_cacheHelper = cacheHelper;
|
||||
}
|
||||
|
||||
[Obsolete("Use the ctor specifying an ILogger instead")]
|
||||
[Obsolete("Use the ctor specifying all dependencies instead, NOTE: disableAllCache has zero effect")]
|
||||
public RepositoryFactory(bool disableAllCache, CacheHelper cacheHelper)
|
||||
: this(disableAllCache, LoggerResolver.Current.Logger, UmbracoConfig.For.UmbracoSettings())
|
||||
: this(cacheHelper, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider, UmbracoConfig.For.UmbracoSettings())
|
||||
{
|
||||
if (cacheHelper == null) throw new ArgumentNullException("cacheHelper");
|
||||
_cacheHelper = cacheHelper;
|
||||
}
|
||||
|
||||
[Obsolete("Use the ctor specifying an ILogger instead")]
|
||||
[Obsolete("Use the ctor specifying all dependencies instead")]
|
||||
public RepositoryFactory(bool disableAllCache)
|
||||
: this(disableAllCache, LoggerResolver.Current.Logger, UmbracoConfig.For.UmbracoSettings())
|
||||
: this(disableAllCache ? CacheHelper.CreateDisabledCacheHelper() : ApplicationContext.Current.ApplicationCache, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider, UmbracoConfig.For.UmbracoSettings())
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -79,14 +68,14 @@ namespace Umbraco.Core.Persistence
|
||||
{
|
||||
return new TagRepository(
|
||||
uow,
|
||||
_disableAllCache ? (IRepositoryCacheProvider)NullCacheProvider.Current : RuntimeCacheProvider.Current, _logger);
|
||||
_cacheHelper, _logger);
|
||||
}
|
||||
|
||||
public virtual IContentRepository CreateContentRepository(IDatabaseUnitOfWork uow)
|
||||
{
|
||||
return new ContentRepository(
|
||||
uow,
|
||||
_disableAllCache ? (IRepositoryCacheProvider)NullCacheProvider.Current : RuntimeCacheProvider.Current,
|
||||
uow,
|
||||
_cacheHelper,
|
||||
_logger,
|
||||
CreateContentTypeRepository(uow),
|
||||
CreateTemplateRepository(uow),
|
||||
@@ -98,7 +87,7 @@ namespace Umbraco.Core.Persistence
|
||||
{
|
||||
return new ContentTypeRepository(
|
||||
uow,
|
||||
_disableAllCache ? (IRepositoryCacheProvider)NullCacheProvider.Current : RuntimeCacheProvider.Current,
|
||||
_cacheHelper,
|
||||
_logger,
|
||||
CreateTemplateRepository(uow));
|
||||
}
|
||||
@@ -107,7 +96,7 @@ namespace Umbraco.Core.Persistence
|
||||
{
|
||||
return new DataTypeDefinitionRepository(
|
||||
uow,
|
||||
_disableAllCache ? (IRepositoryCacheProvider)NullCacheProvider.Current : RuntimeCacheProvider.Current,
|
||||
_cacheHelper,
|
||||
_cacheHelper,
|
||||
_logger,
|
||||
CreateContentTypeRepository(uow));
|
||||
@@ -117,8 +106,9 @@ namespace Umbraco.Core.Persistence
|
||||
{
|
||||
return new DictionaryRepository(
|
||||
uow,
|
||||
_disableAllCache ? (IRepositoryCacheProvider)NullCacheProvider.Current : RuntimeCacheProvider.Current,
|
||||
_cacheHelper,
|
||||
_logger,
|
||||
_sqlSyntax,
|
||||
CreateLanguageRepository(uow));
|
||||
}
|
||||
|
||||
@@ -126,7 +116,7 @@ namespace Umbraco.Core.Persistence
|
||||
{
|
||||
return new LanguageRepository(
|
||||
uow,
|
||||
_disableAllCache ? (IRepositoryCacheProvider)NullCacheProvider.Current : RuntimeCacheProvider.Current,
|
||||
_cacheHelper,
|
||||
_logger);
|
||||
}
|
||||
|
||||
@@ -134,7 +124,7 @@ namespace Umbraco.Core.Persistence
|
||||
{
|
||||
return new MediaRepository(
|
||||
uow,
|
||||
_disableAllCache ? (IRepositoryCacheProvider)NullCacheProvider.Current : RuntimeCacheProvider.Current,
|
||||
_cacheHelper,
|
||||
_logger,
|
||||
CreateMediaTypeRepository(uow),
|
||||
CreateTagRepository(uow)) { EnsureUniqueNaming = _settings.Content.EnsureUniqueNaming };
|
||||
@@ -144,7 +134,7 @@ namespace Umbraco.Core.Persistence
|
||||
{
|
||||
return new MediaTypeRepository(
|
||||
uow,
|
||||
_disableAllCache ? (IRepositoryCacheProvider)NullCacheProvider.Current : RuntimeCacheProvider.Current,
|
||||
_cacheHelper,
|
||||
_logger);
|
||||
}
|
||||
|
||||
@@ -152,7 +142,7 @@ namespace Umbraco.Core.Persistence
|
||||
{
|
||||
return new RelationRepository(
|
||||
uow,
|
||||
NullCacheProvider.Current,
|
||||
CacheHelper.CreateDisabledCacheHelper(), //never cache
|
||||
_logger,
|
||||
CreateRelationTypeRepository(uow));
|
||||
}
|
||||
@@ -161,7 +151,7 @@ namespace Umbraco.Core.Persistence
|
||||
{
|
||||
return new RelationTypeRepository(
|
||||
uow,
|
||||
NullCacheProvider.Current,
|
||||
CacheHelper.CreateDisabledCacheHelper(), //never cache
|
||||
_logger);
|
||||
}
|
||||
|
||||
@@ -188,7 +178,7 @@ namespace Umbraco.Core.Persistence
|
||||
public virtual ITemplateRepository CreateTemplateRepository(IDatabaseUnitOfWork uow)
|
||||
{
|
||||
return new TemplateRepository(uow,
|
||||
_disableAllCache ? (IRepositoryCacheProvider)NullCacheProvider.Current : RuntimeCacheProvider.Current,
|
||||
_cacheHelper,
|
||||
_logger,
|
||||
new PhysicalFileSystem(SystemDirectories.Masterpages),
|
||||
new PhysicalFileSystem(SystemDirectories.MvcViews),
|
||||
@@ -199,7 +189,7 @@ namespace Umbraco.Core.Persistence
|
||||
{
|
||||
return new ServerRegistrationRepository(
|
||||
uow,
|
||||
NullCacheProvider.Current,
|
||||
CacheHelper.CreateDisabledCacheHelper(), //never cache
|
||||
_logger);
|
||||
}
|
||||
|
||||
@@ -208,7 +198,7 @@ namespace Umbraco.Core.Persistence
|
||||
return new UserTypeRepository(
|
||||
uow,
|
||||
//There's not many user types but we query on users all the time so the result needs to be cached
|
||||
_disableAllCache ? (IRepositoryCacheProvider)NullCacheProvider.Current : RuntimeCacheProvider.Current,
|
||||
_cacheHelper,
|
||||
_logger);
|
||||
}
|
||||
|
||||
@@ -217,7 +207,7 @@ namespace Umbraco.Core.Persistence
|
||||
return new UserRepository(
|
||||
uow,
|
||||
//Need to cache users - we look up user information more than anything in the back office!
|
||||
_disableAllCache ? (IRepositoryCacheProvider)NullCacheProvider.Current : RuntimeCacheProvider.Current,
|
||||
_cacheHelper,
|
||||
_logger,
|
||||
CreateUserTypeRepository(uow),
|
||||
_cacheHelper);
|
||||
@@ -225,8 +215,8 @@ namespace Umbraco.Core.Persistence
|
||||
|
||||
internal virtual IMacroRepository CreateMacroRepository(IDatabaseUnitOfWork uow)
|
||||
{
|
||||
return new MacroRepository(uow,
|
||||
_disableAllCache ? (IRepositoryCacheProvider)NullCacheProvider.Current : RuntimeCacheProvider.Current,
|
||||
return new MacroRepository(uow,
|
||||
_cacheHelper,
|
||||
_logger);
|
||||
}
|
||||
|
||||
@@ -234,7 +224,7 @@ namespace Umbraco.Core.Persistence
|
||||
{
|
||||
return new MemberRepository(
|
||||
uow,
|
||||
_disableAllCache ? (IRepositoryCacheProvider)NullCacheProvider.Current : RuntimeCacheProvider.Current,
|
||||
_cacheHelper,
|
||||
_logger,
|
||||
CreateMemberTypeRepository(uow),
|
||||
CreateMemberGroupRepository(uow),
|
||||
@@ -243,15 +233,15 @@ namespace Umbraco.Core.Persistence
|
||||
|
||||
public virtual IMemberTypeRepository CreateMemberTypeRepository(IDatabaseUnitOfWork uow)
|
||||
{
|
||||
return new MemberTypeRepository(uow,
|
||||
_disableAllCache ? (IRepositoryCacheProvider)NullCacheProvider.Current : RuntimeCacheProvider.Current,
|
||||
return new MemberTypeRepository(uow,
|
||||
_cacheHelper,
|
||||
_logger);
|
||||
}
|
||||
|
||||
public virtual IMemberGroupRepository CreateMemberGroupRepository(IDatabaseUnitOfWork uow)
|
||||
{
|
||||
return new MemberGroupRepository(uow,
|
||||
_disableAllCache ? (IRepositoryCacheProvider)NullCacheProvider.Current : RuntimeCacheProvider.Current,
|
||||
return new MemberGroupRepository(uow,
|
||||
_cacheHelper,
|
||||
_logger,
|
||||
_cacheHelper);
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ namespace Umbraco.Core.Persistence.SqlSyntax
|
||||
/// <summary>
|
||||
/// A resolver to return all ISqlSyntaxProvider objects
|
||||
/// </summary>
|
||||
[Obsolete("This should really not be used, instead ISqlSyntaxProvider should be ctor injected into any service that needs it")]
|
||||
internal sealed class SqlSyntaxProvidersResolver : ManyObjectsResolverBase<SqlSyntaxProvidersResolver, ISqlSyntaxProvider>
|
||||
{
|
||||
/// <summary>
|
||||
|
||||
@@ -41,7 +41,7 @@ namespace Umbraco.Core.Services
|
||||
|
||||
[Obsolete("Use the constructors that specify all dependencies instead")]
|
||||
public ContentService()
|
||||
: this(LoggerResolver.Current.Logger, new RepositoryFactory(false, LoggerResolver.Current.Logger, UmbracoConfig.For.UmbracoSettings()))
|
||||
: this(LoggerResolver.Current.Logger, new RepositoryFactory(ApplicationContext.Current.ApplicationCache, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider, UmbracoConfig.For.UmbracoSettings()))
|
||||
{ }
|
||||
|
||||
[Obsolete("Use the constructors that specify all dependencies instead")]
|
||||
@@ -51,7 +51,7 @@ namespace Umbraco.Core.Services
|
||||
|
||||
[Obsolete("Use the constructors that specify all dependencies instead")]
|
||||
public ContentService(ILogger logger, IDatabaseUnitOfWorkProvider provider)
|
||||
: this(logger, provider, new RepositoryFactory(false, LoggerResolver.Current.Logger, UmbracoConfig.For.UmbracoSettings()), new PublishingStrategy())
|
||||
: this(logger, provider, new RepositoryFactory(ApplicationContext.Current.ApplicationCache, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider, UmbracoConfig.For.UmbracoSettings()), new PublishingStrategy())
|
||||
{ }
|
||||
|
||||
[Obsolete("Use the constructors that specify all dependencies instead")]
|
||||
@@ -1330,9 +1330,9 @@ namespace Umbraco.Core.Services
|
||||
|
||||
Audit.Add(AuditTypes.Copy, "Copy Content performed by user", content.WriterId, content.Id);
|
||||
|
||||
//TODO: Don't think we need this here because cache should be cleared by the event listeners
|
||||
// and the correct ICacheRefreshers!?
|
||||
RuntimeCacheProvider.Current.Clear();
|
||||
////TODO: Don't think we need this here because cache should be cleared by the event listeners
|
||||
//// and the correct ICacheRefreshers!?
|
||||
//RuntimeCacheProvider.Current.Clear();
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Persistence;
|
||||
using Umbraco.Core.Persistence.Querying;
|
||||
using Umbraco.Core.Persistence.SqlSyntax;
|
||||
using Umbraco.Core.Persistence.UnitOfWork;
|
||||
|
||||
namespace Umbraco.Core.Services
|
||||
@@ -23,7 +24,7 @@ namespace Umbraco.Core.Services
|
||||
|
||||
[Obsolete("Use the constructors that specify all dependencies instead")]
|
||||
public LocalizationService()
|
||||
: this(new RepositoryFactory(false, LoggerResolver.Current.Logger, UmbracoConfig.For.UmbracoSettings()))
|
||||
: this(new RepositoryFactory(ApplicationContext.Current.ApplicationCache, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider, UmbracoConfig.For.UmbracoSettings()))
|
||||
{}
|
||||
|
||||
[Obsolete("Use the constructors that specify all dependencies instead")]
|
||||
@@ -34,7 +35,7 @@ namespace Umbraco.Core.Services
|
||||
|
||||
[Obsolete("Use the constructors that specify all dependencies instead")]
|
||||
public LocalizationService(IDatabaseUnitOfWorkProvider provider)
|
||||
: this(provider, new RepositoryFactory(false, LoggerResolver.Current.Logger, UmbracoConfig.For.UmbracoSettings()))
|
||||
: this(provider, new RepositoryFactory(ApplicationContext.Current.ApplicationCache, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider, UmbracoConfig.For.UmbracoSettings()))
|
||||
{
|
||||
}
|
||||
|
||||
@@ -141,10 +142,11 @@ namespace Umbraco.Core.Services
|
||||
{
|
||||
using (var repository = _repositoryFactory.CreateDictionaryRepository(_uowProvider.GetUnitOfWork()))
|
||||
{
|
||||
var query = Query<IDictionaryItem>.Builder.Where(x => x.Key == id);
|
||||
var items = repository.GetByQuery(query);
|
||||
return repository.Get(id);
|
||||
//var query = Query<IDictionaryItem>.Builder.Where(x => x.Key == id);
|
||||
//var items = repository.GetByQuery(query);
|
||||
|
||||
return items.FirstOrDefault();
|
||||
//return items.FirstOrDefault();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,10 +159,11 @@ namespace Umbraco.Core.Services
|
||||
{
|
||||
using (var repository = _repositoryFactory.CreateDictionaryRepository(_uowProvider.GetUnitOfWork()))
|
||||
{
|
||||
var query = Query<IDictionaryItem>.Builder.Where(x => x.ItemKey == key);
|
||||
var items = repository.GetByQuery(query);
|
||||
return repository.Get(key);
|
||||
//var query = Query<IDictionaryItem>.Builder.Where(x => x.ItemKey == key);
|
||||
//var items = repository.GetByQuery(query);
|
||||
|
||||
return items.FirstOrDefault();
|
||||
//return items.FirstOrDefault();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,10 +207,11 @@ namespace Umbraco.Core.Services
|
||||
{
|
||||
using (var repository = _repositoryFactory.CreateDictionaryRepository(_uowProvider.GetUnitOfWork()))
|
||||
{
|
||||
var query = Query<IDictionaryItem>.Builder.Where(x => x.ItemKey == key);
|
||||
var items = repository.GetByQuery(query);
|
||||
return repository.Get(key) != null;
|
||||
//var query = Query<IDictionaryItem>.Builder.Where(x => x.ItemKey == key);
|
||||
//var items = repository.GetByQuery(query);
|
||||
|
||||
return items.Any();
|
||||
//return items.Any();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -279,10 +283,11 @@ namespace Umbraco.Core.Services
|
||||
{
|
||||
using (var repository = _repositoryFactory.CreateLanguageRepository(_uowProvider.GetUnitOfWork()))
|
||||
{
|
||||
var query = Query<ILanguage>.Builder.Where(x => x.CultureName == cultureName);
|
||||
var items = repository.GetByQuery(query);
|
||||
return repository.GetByCultureName(cultureName);
|
||||
//var query = Query<ILanguage>.Builder.Where(x => x.CultureName == cultureName);
|
||||
//var items = repository.GetByQuery(query);
|
||||
|
||||
return items.FirstOrDefault();
|
||||
//return items.FirstOrDefault();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -295,10 +300,11 @@ namespace Umbraco.Core.Services
|
||||
{
|
||||
using (var repository = _repositoryFactory.CreateLanguageRepository(_uowProvider.GetUnitOfWork()))
|
||||
{
|
||||
var query = Query<ILanguage>.Builder.Where(x => x.IsoCode == isoCode);
|
||||
var items = repository.GetByQuery(query);
|
||||
return repository.GetByIsoCode(isoCode);
|
||||
//var query = Query<ILanguage>.Builder.Where(x => x.IsoCode == isoCode);
|
||||
//var items = repository.GetByQuery(query);
|
||||
|
||||
return items.FirstOrDefault();
|
||||
//return items.FirstOrDefault();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -321,6 +321,7 @@
|
||||
<Compile Include="Logging\LoggerResolver.cs" />
|
||||
<Compile Include="Models\IPartialView.cs" />
|
||||
<Compile Include="Persistence\DatabaseSchemaHelper.cs" />
|
||||
<Compile Include="Persistence\Repositories\SimpleGetRepository.cs" />
|
||||
<Compile Include="Services\LocalizedTextService.cs" />
|
||||
<Compile Include="Services\ILocalizedTextService.cs" />
|
||||
<Compile Include="Logging\ILogger.cs" />
|
||||
|
||||
@@ -25,10 +25,10 @@ namespace Umbraco.Tests.Migrations.Upgrades
|
||||
{
|
||||
private ContentRepository CreateRepository(IDatabaseUnitOfWork unitOfWork, out ContentTypeRepository contentTypeRepository)
|
||||
{
|
||||
var templateRepository = new TemplateRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>(), Mock.Of<IFileSystem>(), Mock.Of<IFileSystem>(), Mock.Of<ITemplatesSection>());
|
||||
var tagRepository = new TagRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>());
|
||||
contentTypeRepository = new ContentTypeRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>(), templateRepository);
|
||||
var repository = new ContentRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), contentTypeRepository, templateRepository, tagRepository, CacheHelper.CreateDisabledCacheHelper());
|
||||
var templateRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), Mock.Of<IFileSystem>(), Mock.Of<IFileSystem>(), Mock.Of<ITemplatesSection>());
|
||||
var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
contentTypeRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), templateRepository);
|
||||
var repository = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), contentTypeRepository, templateRepository, tagRepository, CacheHelper.CreateDisabledCacheHelper());
|
||||
return repository;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ using Umbraco.Core;
|
||||
using Umbraco.Core.Configuration.UmbracoSettings;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Persistence;
|
||||
using Umbraco.Core.Persistence.SqlSyntax;
|
||||
using Umbraco.Core.Persistence.UnitOfWork;
|
||||
using Umbraco.Core.Services;
|
||||
using Moq;
|
||||
@@ -46,12 +47,12 @@ namespace Umbraco.Tests
|
||||
new Mock<IFileService>().Object,
|
||||
new Mock<ILocalizationService>().Object,
|
||||
new Mock<IUserService>().Object,
|
||||
new RepositoryFactory(true, Mock.Of<ILogger>(), Mock.Of<IUmbracoSettingsSection>()),
|
||||
new RepositoryFactory(CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), Mock.Of<ISqlSyntaxProvider>(), Mock.Of<IUmbracoSettingsSection>()),
|
||||
new Mock<IDatabaseUnitOfWorkProvider>().Object),
|
||||
new Mock<IEntityService>().Object,
|
||||
new RelationService(
|
||||
new Mock<IDatabaseUnitOfWorkProvider>().Object,
|
||||
new RepositoryFactory(true, Mock.Of<ILogger>(), Mock.Of<IUmbracoSettingsSection>()),
|
||||
new RepositoryFactory(CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), Mock.Of<ISqlSyntaxProvider>(), Mock.Of<IUmbracoSettingsSection>()),
|
||||
new Mock<IEntityService>().Object),
|
||||
new Mock<IMemberGroupService>().Object,
|
||||
new Mock<IMemberTypeService>().Object,
|
||||
@@ -94,12 +95,12 @@ namespace Umbraco.Tests
|
||||
new Mock<IFileService>().Object,
|
||||
new Mock<ILocalizationService>().Object,
|
||||
new Mock<IUserService>().Object,
|
||||
new RepositoryFactory(true, Mock.Of<ILogger>(), Mock.Of<IUmbracoSettingsSection>()),
|
||||
new RepositoryFactory(CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), Mock.Of<ISqlSyntaxProvider>(), Mock.Of<IUmbracoSettingsSection>()),
|
||||
new Mock<IDatabaseUnitOfWorkProvider>().Object),
|
||||
new Mock<IEntityService>().Object,
|
||||
new RelationService(
|
||||
new Mock<IDatabaseUnitOfWorkProvider>().Object,
|
||||
new RepositoryFactory(true, Mock.Of<ILogger>(), Mock.Of<IUmbracoSettingsSection>()),
|
||||
new RepositoryFactory(CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), Mock.Of<ISqlSyntaxProvider>(), Mock.Of<IUmbracoSettingsSection>()),
|
||||
new Mock<IEntityService>().Object),
|
||||
new Mock<IMemberGroupService>().Object,
|
||||
new Mock<IMemberTypeService>().Object,
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Cache;
|
||||
using Umbraco.Core.Exceptions;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Models.EntityBase;
|
||||
@@ -220,14 +222,14 @@ namespace Umbraco.Tests.Models
|
||||
((IUmbracoEntity)content).AdditionalData.Add("test1", 123);
|
||||
((IUmbracoEntity)content).AdditionalData.Add("test2", "hello");
|
||||
|
||||
var runtimeCache = new RuntimeCacheProvider();
|
||||
runtimeCache.Save(typeof(IContent), content);
|
||||
var runtimeCache = new ObjectCacheRuntimeCacheProvider();
|
||||
runtimeCache.InsertCacheItem(content.Id.ToString(CultureInfo.InvariantCulture), () => content);
|
||||
|
||||
using (DisposableTimer.DebugDuration<ContentTests>("STARTING PERF TEST WITH RUNTIME CACHE"))
|
||||
{
|
||||
for (int j = 0; j < 1000; j++)
|
||||
{
|
||||
var clone = runtimeCache.GetById(typeof(IContent), content.Id.ToGuid());
|
||||
var clone = runtimeCache.GetCacheItem(content.Id.ToString(CultureInfo.InvariantCulture));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -43,9 +43,10 @@ namespace Umbraco.Tests.Persistence
|
||||
|
||||
string path = TestHelper.CurrentAssemblyDirectory;
|
||||
AppDomain.CurrentDomain.SetData("DataDirectory", path);
|
||||
|
||||
RepositoryResolver.Current = new RepositoryResolver(new RepositoryFactory(true,
|
||||
|
||||
RepositoryResolver.Current = new RepositoryResolver(new RepositoryFactory(CacheHelper.CreateDisabledCacheHelper(),
|
||||
_logger,
|
||||
new SqlCeSyntaxProvider(),
|
||||
Mock.Of<IUmbracoSettingsSection>()));
|
||||
|
||||
//disable cache
|
||||
|
||||
@@ -1,138 +1,138 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Persistence.Caching;
|
||||
using Umbraco.Tests.TestHelpers.Entities;
|
||||
//using System;
|
||||
//using System.Collections.Generic;
|
||||
//using System.Linq;
|
||||
//using NUnit.Framework;
|
||||
//using Umbraco.Core;
|
||||
//using Umbraco.Core.Persistence.Caching;
|
||||
//using Umbraco.Tests.TestHelpers.Entities;
|
||||
|
||||
namespace Umbraco.Tests.Persistence.Caching
|
||||
{
|
||||
[TestFixture]
|
||||
public class RuntimeCacheProviderTest
|
||||
{
|
||||
private IRepositoryCacheProvider _registry;
|
||||
//namespace Umbraco.Tests.Persistence.Caching
|
||||
//{
|
||||
// [TestFixture]
|
||||
// public class RuntimeCacheProviderTest
|
||||
// {
|
||||
// private IRepositoryCacheProvider _registry;
|
||||
|
||||
[SetUp]
|
||||
public void Initiate_Registry()
|
||||
{
|
||||
_registry = RuntimeCacheProvider.Current;
|
||||
// [SetUp]
|
||||
// public void Initiate_Registry()
|
||||
// {
|
||||
// _registry = RuntimeCacheProvider.Current;
|
||||
|
||||
//Fill the registry with random entities
|
||||
var entity1 = new MockedEntity { Id = 1, Key = 1.ToGuid(), Alias = "mocked1", Name = "Mocked1", Value = Guid.NewGuid().ToString("n") };
|
||||
var entity2 = new MockedEntity { Id = 2, Key = 2.ToGuid(), Alias = "mocked2", Name = "Mocked2", Value = Guid.NewGuid().ToString("n") };
|
||||
var entity3 = new MockedEntity { Id = 3, Key = 3.ToGuid(), Alias = "mocked3", Name = "Mocked3", Value = Guid.NewGuid().ToString("n") };
|
||||
var entity4 = new MockedEntity { Id = 4, Key = 4.ToGuid(), Alias = "mocked4", Name = "Mocked4", Value = Guid.NewGuid().ToString("n") };
|
||||
var entity5 = new MockedEntity { Id = 5, Key = 5.ToGuid(), Alias = "mocked5", Name = "Mocked5", Value = Guid.NewGuid().ToString("n") };
|
||||
var entity6 = new MockedEntity { Id = 6, Key = 6.ToGuid(), Alias = "mocked6", Name = "Mocked6", Value = Guid.NewGuid().ToString("n") };
|
||||
// //Fill the registry with random entities
|
||||
// var entity1 = new MockedEntity { Id = 1, Key = 1.ToGuid(), Alias = "mocked1", Name = "Mocked1", Value = Guid.NewGuid().ToString("n") };
|
||||
// var entity2 = new MockedEntity { Id = 2, Key = 2.ToGuid(), Alias = "mocked2", Name = "Mocked2", Value = Guid.NewGuid().ToString("n") };
|
||||
// var entity3 = new MockedEntity { Id = 3, Key = 3.ToGuid(), Alias = "mocked3", Name = "Mocked3", Value = Guid.NewGuid().ToString("n") };
|
||||
// var entity4 = new MockedEntity { Id = 4, Key = 4.ToGuid(), Alias = "mocked4", Name = "Mocked4", Value = Guid.NewGuid().ToString("n") };
|
||||
// var entity5 = new MockedEntity { Id = 5, Key = 5.ToGuid(), Alias = "mocked5", Name = "Mocked5", Value = Guid.NewGuid().ToString("n") };
|
||||
// var entity6 = new MockedEntity { Id = 6, Key = 6.ToGuid(), Alias = "mocked6", Name = "Mocked6", Value = Guid.NewGuid().ToString("n") };
|
||||
|
||||
_registry.Save(typeof(MockedEntity), entity1);
|
||||
_registry.Save(typeof(MockedEntity), entity2);
|
||||
_registry.Save(typeof(MockedEntity), entity3);
|
||||
_registry.Save(typeof(MockedEntity), entity4);
|
||||
_registry.Save(typeof(MockedEntity), entity5);
|
||||
_registry.Save(typeof(MockedEntity), entity6);
|
||||
}
|
||||
// _registry.Save(typeof(MockedEntity), entity1);
|
||||
// _registry.Save(typeof(MockedEntity), entity2);
|
||||
// _registry.Save(typeof(MockedEntity), entity3);
|
||||
// _registry.Save(typeof(MockedEntity), entity4);
|
||||
// _registry.Save(typeof(MockedEntity), entity5);
|
||||
// _registry.Save(typeof(MockedEntity), entity6);
|
||||
// }
|
||||
|
||||
[Test]
|
||||
public void Tracked_Keys_Removed_When_Cache_Removed()
|
||||
{
|
||||
_registry = RuntimeCacheProvider.Current;
|
||||
// [Test]
|
||||
// public void Tracked_Keys_Removed_When_Cache_Removed()
|
||||
// {
|
||||
// _registry = RuntimeCacheProvider.Current;
|
||||
|
||||
//Fill the registry with random entities
|
||||
var entity1 = new MockedEntity { Id = 1, Key = 1.ToGuid(), Alias = "mocked1", Name = "Mocked1", Value = Guid.NewGuid().ToString("n") };
|
||||
var entity2 = new MockedEntity { Id = 2, Key = 2.ToGuid(), Alias = "mocked2", Name = "Mocked2", Value = Guid.NewGuid().ToString("n") };
|
||||
var entity3 = new MockedEntity { Id = 3, Key = 3.ToGuid(), Alias = "mocked3", Name = "Mocked3", Value = Guid.NewGuid().ToString("n") };
|
||||
// //Fill the registry with random entities
|
||||
// var entity1 = new MockedEntity { Id = 1, Key = 1.ToGuid(), Alias = "mocked1", Name = "Mocked1", Value = Guid.NewGuid().ToString("n") };
|
||||
// var entity2 = new MockedEntity { Id = 2, Key = 2.ToGuid(), Alias = "mocked2", Name = "Mocked2", Value = Guid.NewGuid().ToString("n") };
|
||||
// var entity3 = new MockedEntity { Id = 3, Key = 3.ToGuid(), Alias = "mocked3", Name = "Mocked3", Value = Guid.NewGuid().ToString("n") };
|
||||
|
||||
_registry.Save(typeof(MockedEntity), entity1);
|
||||
_registry.Save(typeof(MockedEntity), entity2);
|
||||
_registry.Save(typeof(MockedEntity), entity3);
|
||||
// _registry.Save(typeof(MockedEntity), entity1);
|
||||
// _registry.Save(typeof(MockedEntity), entity2);
|
||||
// _registry.Save(typeof(MockedEntity), entity3);
|
||||
|
||||
//now clear the runtime cache internally
|
||||
((RuntimeCacheProvider)_registry).ClearDataCache();
|
||||
// //now clear the runtime cache internally
|
||||
// ((RuntimeCacheProvider)_registry).ClearDataCache();
|
||||
|
||||
Assert.AreEqual(0, _registry.GetAllByType(typeof (MockedEntity)).Count());
|
||||
}
|
||||
// Assert.AreEqual(0, _registry.GetAllByType(typeof (MockedEntity)).Count());
|
||||
// }
|
||||
|
||||
[Test]
|
||||
public void Can_Clear_By_Type()
|
||||
{
|
||||
var customObj1 = new CustomMockedEntity { Id = 5, Key = 5.ToGuid(), Alias = "mocked5", Name = "Mocked5", Value = Guid.NewGuid().ToString("n") };
|
||||
var customObj2 = new CustomMockedEntity { Id = 6, Key = 6.ToGuid(), Alias = "mocked6", Name = "Mocked6", Value = Guid.NewGuid().ToString("n") };
|
||||
// [Test]
|
||||
// public void Can_Clear_By_Type()
|
||||
// {
|
||||
// var customObj1 = new CustomMockedEntity { Id = 5, Key = 5.ToGuid(), Alias = "mocked5", Name = "Mocked5", Value = Guid.NewGuid().ToString("n") };
|
||||
// var customObj2 = new CustomMockedEntity { Id = 6, Key = 6.ToGuid(), Alias = "mocked6", Name = "Mocked6", Value = Guid.NewGuid().ToString("n") };
|
||||
|
||||
_registry.Save(typeof(CustomMockedEntity), customObj1);
|
||||
_registry.Save(typeof(CustomMockedEntity), customObj2);
|
||||
// _registry.Save(typeof(CustomMockedEntity), customObj1);
|
||||
// _registry.Save(typeof(CustomMockedEntity), customObj2);
|
||||
|
||||
Assert.AreEqual(2, _registry.GetAllByType(typeof(CustomMockedEntity)).Count());
|
||||
// Assert.AreEqual(2, _registry.GetAllByType(typeof(CustomMockedEntity)).Count());
|
||||
|
||||
_registry.Clear(typeof(CustomMockedEntity));
|
||||
// _registry.Clear(typeof(CustomMockedEntity));
|
||||
|
||||
Assert.AreEqual(0, _registry.GetAllByType(typeof(CustomMockedEntity)).Count());
|
||||
}
|
||||
// Assert.AreEqual(0, _registry.GetAllByType(typeof(CustomMockedEntity)).Count());
|
||||
// }
|
||||
|
||||
[Test]
|
||||
public void Can_Get_Entity_From_Registry()
|
||||
{
|
||||
// Arrange
|
||||
var mockedEntity = new MockedEntity { Id = 20, Key = 20.ToGuid(), Alias = "getMocked", Name = "GetMocked", Value = "Getting entity by id test" };
|
||||
_registry.Save(typeof(MockedEntity), mockedEntity);
|
||||
// [Test]
|
||||
// public void Can_Get_Entity_From_Registry()
|
||||
// {
|
||||
// // Arrange
|
||||
// var mockedEntity = new MockedEntity { Id = 20, Key = 20.ToGuid(), Alias = "getMocked", Name = "GetMocked", Value = "Getting entity by id test" };
|
||||
// _registry.Save(typeof(MockedEntity), mockedEntity);
|
||||
|
||||
// Act
|
||||
var entity = _registry.GetById(mockedEntity.GetType(), mockedEntity.Key);
|
||||
// // Act
|
||||
// var entity = _registry.GetById(mockedEntity.GetType(), mockedEntity.Key);
|
||||
|
||||
// Assert
|
||||
Assert.That(entity, Is.Not.Null);
|
||||
Assert.That(entity.Id, Is.EqualTo(mockedEntity.Id));
|
||||
Assert.That(entity.GetType(), Is.EqualTo(mockedEntity.GetType()));
|
||||
}
|
||||
// // Assert
|
||||
// Assert.That(entity, Is.Not.Null);
|
||||
// Assert.That(entity.Id, Is.EqualTo(mockedEntity.Id));
|
||||
// Assert.That(entity.GetType(), Is.EqualTo(mockedEntity.GetType()));
|
||||
// }
|
||||
|
||||
[Test]
|
||||
public void Can_Get_Entities_By_Ids_From_Registry()
|
||||
{
|
||||
// Arrange
|
||||
var mockedEntity1 = new MockedEntity { Id = 30, Key = 30.ToGuid(), Alias = "getMocked1", Name = "GetMocked1", Value = "Entity 1 - Getting entity by ids test" };
|
||||
var mockedEntity2 = new MockedEntity { Id = 31, Key = 31.ToGuid(), Alias = "getMocked2", Name = "GetMocked2", Value = "Entity 2 - Getting entity by ids test" };
|
||||
_registry.Save(typeof(MockedEntity), mockedEntity1);
|
||||
_registry.Save(typeof(MockedEntity), mockedEntity2);
|
||||
// [Test]
|
||||
// public void Can_Get_Entities_By_Ids_From_Registry()
|
||||
// {
|
||||
// // Arrange
|
||||
// var mockedEntity1 = new MockedEntity { Id = 30, Key = 30.ToGuid(), Alias = "getMocked1", Name = "GetMocked1", Value = "Entity 1 - Getting entity by ids test" };
|
||||
// var mockedEntity2 = new MockedEntity { Id = 31, Key = 31.ToGuid(), Alias = "getMocked2", Name = "GetMocked2", Value = "Entity 2 - Getting entity by ids test" };
|
||||
// _registry.Save(typeof(MockedEntity), mockedEntity1);
|
||||
// _registry.Save(typeof(MockedEntity), mockedEntity2);
|
||||
|
||||
// Act
|
||||
var entities = _registry.GetByIds(typeof(MockedEntity), new List<Guid> { mockedEntity1.Key, mockedEntity2.Key }).ToList();
|
||||
// // Act
|
||||
// var entities = _registry.GetByIds(typeof(MockedEntity), new List<Guid> { mockedEntity1.Key, mockedEntity2.Key }).ToList();
|
||||
|
||||
// Assert
|
||||
Assert.That(entities, Is.Not.Null);
|
||||
Assert.That(entities.Count(), Is.EqualTo(2));
|
||||
Assert.That(entities.Any(x => x.Id == mockedEntity1.Id), Is.True);
|
||||
Assert.That(entities.Any(x => x.Id == mockedEntity2.Id), Is.True);
|
||||
}
|
||||
// // Assert
|
||||
// Assert.That(entities, Is.Not.Null);
|
||||
// Assert.That(entities.Count(), Is.EqualTo(2));
|
||||
// Assert.That(entities.Any(x => x.Id == mockedEntity1.Id), Is.True);
|
||||
// Assert.That(entities.Any(x => x.Id == mockedEntity2.Id), Is.True);
|
||||
// }
|
||||
|
||||
[Test]
|
||||
public void Can_Get_Entities_By_Type_From_Registry()
|
||||
{
|
||||
var entities = _registry.GetAllByType(typeof(MockedEntity));
|
||||
// [Test]
|
||||
// public void Can_Get_Entities_By_Type_From_Registry()
|
||||
// {
|
||||
// var entities = _registry.GetAllByType(typeof(MockedEntity));
|
||||
|
||||
Assert.That(entities, Is.Not.Null);
|
||||
Assert.That(entities.Any(), Is.True);
|
||||
Assert.That(entities.Count(), Is.GreaterThanOrEqualTo(6));
|
||||
}
|
||||
// Assert.That(entities, Is.Not.Null);
|
||||
// Assert.That(entities.Any(), Is.True);
|
||||
// Assert.That(entities.Count(), Is.GreaterThanOrEqualTo(6));
|
||||
// }
|
||||
|
||||
[Test]
|
||||
public void Can_Delete_Entity_From_Registry()
|
||||
{
|
||||
// Arrange
|
||||
var mockedEntity = new MockedEntity { Id = 40, Key = 40.ToGuid(), Alias = "deleteMocked", Name = "DeleteMocked", Value = "Deleting entity test" };
|
||||
_registry.Save(typeof(MockedEntity), mockedEntity);
|
||||
var entitiesBeforeDeletion = _registry.GetAllByType(typeof(MockedEntity));
|
||||
int countBefore = entitiesBeforeDeletion.Count();
|
||||
// [Test]
|
||||
// public void Can_Delete_Entity_From_Registry()
|
||||
// {
|
||||
// // Arrange
|
||||
// var mockedEntity = new MockedEntity { Id = 40, Key = 40.ToGuid(), Alias = "deleteMocked", Name = "DeleteMocked", Value = "Deleting entity test" };
|
||||
// _registry.Save(typeof(MockedEntity), mockedEntity);
|
||||
// var entitiesBeforeDeletion = _registry.GetAllByType(typeof(MockedEntity));
|
||||
// int countBefore = entitiesBeforeDeletion.Count();
|
||||
|
||||
// Act
|
||||
var entity = _registry.GetById(mockedEntity.GetType(), mockedEntity.Key);
|
||||
_registry.Delete(typeof(MockedEntity), entity);
|
||||
var entitiesAfterDeletion = _registry.GetAllByType(typeof(MockedEntity));
|
||||
int countAfter = entitiesAfterDeletion.Count();
|
||||
// // Act
|
||||
// var entity = _registry.GetById(mockedEntity.GetType(), mockedEntity.Key);
|
||||
// _registry.Delete(typeof(MockedEntity), entity);
|
||||
// var entitiesAfterDeletion = _registry.GetAllByType(typeof(MockedEntity));
|
||||
// int countAfter = entitiesAfterDeletion.Count();
|
||||
|
||||
// Assert
|
||||
Assert.That(countBefore, Is.GreaterThan(countAfter));
|
||||
Assert.That(entitiesAfterDeletion.Count(x => x.Id == mockedEntity.Id), Is.EqualTo(0));
|
||||
}
|
||||
}
|
||||
}
|
||||
// // Assert
|
||||
// Assert.That(countBefore, Is.GreaterThan(countAfter));
|
||||
// Assert.That(entitiesAfterDeletion.Count(x => x.Id == mockedEntity.Id), Is.EqualTo(0));
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
@@ -44,10 +44,10 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
|
||||
private ContentRepository CreateRepository(IDatabaseUnitOfWork unitOfWork, out ContentTypeRepository contentTypeRepository)
|
||||
{
|
||||
var templateRepository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), Mock.Of<IFileSystem>(), Mock.Of<IFileSystem>(), Mock.Of<ITemplatesSection>());
|
||||
var tagRepository = new TagRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>());
|
||||
contentTypeRepository = new ContentTypeRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), templateRepository);
|
||||
var repository = new ContentRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), contentTypeRepository, templateRepository, tagRepository, CacheHelper.CreateDisabledCacheHelper());
|
||||
var templateRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), Mock.Of<IFileSystem>(), Mock.Of<IFileSystem>(), Mock.Of<ITemplatesSection>());
|
||||
var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
contentTypeRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), templateRepository);
|
||||
var repository = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), contentTypeRepository, templateRepository, tagRepository, CacheHelper.CreateDisabledCacheHelper());
|
||||
return repository;
|
||||
}
|
||||
|
||||
|
||||
@@ -39,17 +39,17 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
|
||||
private ContentRepository CreateRepository(IDatabaseUnitOfWork unitOfWork, out ContentTypeRepository contentTypeRepository)
|
||||
{
|
||||
var templateRepository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), Mock.Of<IFileSystem>(), Mock.Of<IFileSystem>(), Mock.Of<ITemplatesSection>());
|
||||
var tagRepository = new TagRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>());
|
||||
contentTypeRepository = new ContentTypeRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), templateRepository);
|
||||
var repository = new ContentRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), contentTypeRepository, templateRepository, tagRepository, CacheHelper.CreateDisabledCacheHelper());
|
||||
var templateRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), Mock.Of<IFileSystem>(), Mock.Of<IFileSystem>(), Mock.Of<ITemplatesSection>());
|
||||
var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
contentTypeRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), templateRepository);
|
||||
var repository = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), contentTypeRepository, templateRepository, tagRepository, CacheHelper.CreateDisabledCacheHelper());
|
||||
return repository;
|
||||
}
|
||||
|
||||
private ContentTypeRepository CreateRepository(IDatabaseUnitOfWork unitOfWork)
|
||||
{
|
||||
var templateRepository = new TemplateRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>(), Mock.Of<IFileSystem>(), Mock.Of<IFileSystem>(), Mock.Of<ITemplatesSection>());
|
||||
var contentTypeRepository = new ContentTypeRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>(), templateRepository);
|
||||
var templateRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), Mock.Of<IFileSystem>(), Mock.Of<IFileSystem>(), Mock.Of<ITemplatesSection>());
|
||||
var contentTypeRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), templateRepository);
|
||||
return contentTypeRepository;
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var templateRepo = new TemplateRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>(), Mock.Of<IFileSystem>(), Mock.Of<IFileSystem>(), Mock.Of<ITemplatesSection>()))
|
||||
using (var templateRepo = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), Mock.Of<IFileSystem>(), Mock.Of<IFileSystem>(), Mock.Of<ITemplatesSection>()))
|
||||
using (var repository = CreateRepository(unitOfWork))
|
||||
{
|
||||
var templates = new[]
|
||||
|
||||
@@ -34,11 +34,11 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
private DataTypeDefinitionRepository CreateRepository(IDatabaseUnitOfWork unitOfWork)
|
||||
{
|
||||
var dataTypeDefinitionRepository = new DataTypeDefinitionRepository(
|
||||
unitOfWork, NullCacheProvider.Current,
|
||||
unitOfWork, CacheHelper.CreateDisabledCacheHelper(),
|
||||
CacheHelper.CreateDisabledCacheHelper(),
|
||||
Mock.Of<ILogger>(),
|
||||
new ContentTypeRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(),
|
||||
new TemplateRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>(), Mock.Of<IFileSystem>(), Mock.Of<IFileSystem>(), Mock.Of<ITemplatesSection>())));
|
||||
new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(),
|
||||
new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), Mock.Of<IFileSystem>(), Mock.Of<IFileSystem>(), Mock.Of<ITemplatesSection>())));
|
||||
return dataTypeDefinitionRepository;
|
||||
}
|
||||
|
||||
@@ -375,11 +375,11 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
var cache = new CacheHelper(new ObjectCacheRuntimeCacheProvider(), new StaticCacheProvider(), new StaticCacheProvider());
|
||||
|
||||
Func<DataTypeDefinitionRepository> creator = () => new DataTypeDefinitionRepository(
|
||||
unitOfWork, NullCacheProvider.Current,
|
||||
unitOfWork, CacheHelper.CreateDisabledCacheHelper(),
|
||||
cache,
|
||||
Mock.Of<ILogger>(),
|
||||
new ContentTypeRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(),
|
||||
new TemplateRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>(), Mock.Of<IFileSystem>(), Mock.Of<IFileSystem>(), Mock.Of<ITemplatesSection>())));
|
||||
new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(),
|
||||
new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), Mock.Of<IFileSystem>(), Mock.Of<IFileSystem>(), Mock.Of<ITemplatesSection>())));
|
||||
|
||||
DataTypeDefinition dtd;
|
||||
using (var repository = creator())
|
||||
@@ -414,11 +414,11 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
var cache = new CacheHelper(new ObjectCacheRuntimeCacheProvider(), new StaticCacheProvider(), new StaticCacheProvider());
|
||||
|
||||
Func<DataTypeDefinitionRepository> creator = () => new DataTypeDefinitionRepository(
|
||||
unitOfWork, NullCacheProvider.Current,
|
||||
unitOfWork, CacheHelper.CreateDisabledCacheHelper(),
|
||||
cache,
|
||||
Mock.Of<ILogger>(),
|
||||
new ContentTypeRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(),
|
||||
new TemplateRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>(), Mock.Of<IFileSystem>(), Mock.Of<IFileSystem>(), Mock.Of<ITemplatesSection>())));
|
||||
new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(),
|
||||
new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), Mock.Of<IFileSystem>(), Mock.Of<IFileSystem>(), Mock.Of<ITemplatesSection>())));
|
||||
|
||||
DataTypeDefinition dtd;
|
||||
using (var repository = creator())
|
||||
|
||||
@@ -2,12 +2,14 @@
|
||||
using System.Linq;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Persistence;
|
||||
using Umbraco.Core.Persistence.Caching;
|
||||
using Umbraco.Core.Persistence.Querying;
|
||||
using Umbraco.Core.Persistence.Repositories;
|
||||
using Umbraco.Core.Persistence.SqlSyntax;
|
||||
using Umbraco.Core.Persistence.UnitOfWork;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
|
||||
@@ -27,8 +29,8 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
|
||||
private DictionaryRepository CreateRepository(IDatabaseUnitOfWork unitOfWork, out LanguageRepository languageRepository)
|
||||
{
|
||||
languageRepository = new LanguageRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>());
|
||||
var dictionaryRepository = new DictionaryRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), languageRepository);
|
||||
languageRepository = new LanguageRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
var dictionaryRepository = new DictionaryRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), new SqlCeSyntaxProvider(), languageRepository);
|
||||
return dictionaryRepository;
|
||||
}
|
||||
|
||||
@@ -46,6 +48,72 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
Assert.That(repository, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Can_Perform_Get_By_Key_On_DictionaryRepository()
|
||||
{
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
LanguageRepository languageRepository;
|
||||
using (var repository = CreateRepository(unitOfWork, out languageRepository))
|
||||
{
|
||||
var dictionaryItem = (IDictionaryItem)new DictionaryItem("Testing1235")
|
||||
{
|
||||
Translations = new List<IDictionaryTranslation>
|
||||
{
|
||||
new DictionaryTranslation(ServiceContext.LocalizationService.GetLanguageByCultureCode("en-US"), "Hello world")
|
||||
}
|
||||
};
|
||||
|
||||
repository.AddOrUpdate(dictionaryItem);
|
||||
unitOfWork.Commit();
|
||||
|
||||
//re-get
|
||||
dictionaryItem = repository.Get("Testing1235");
|
||||
|
||||
// Assert
|
||||
Assert.That(dictionaryItem, Is.Not.Null);
|
||||
Assert.That(dictionaryItem.ItemKey, Is.EqualTo("Testing1235"));
|
||||
Assert.That(dictionaryItem.Translations.Any(), Is.True);
|
||||
Assert.That(dictionaryItem.Translations.Any(x => x == null), Is.False);
|
||||
Assert.That(dictionaryItem.Translations.First().Value, Is.EqualTo("Hello world"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Can_Perform_Get_By_UniqueId_On_DictionaryRepository()
|
||||
{
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
LanguageRepository languageRepository;
|
||||
using (var repository = CreateRepository(unitOfWork, out languageRepository))
|
||||
{
|
||||
var dictionaryItem = (IDictionaryItem)new DictionaryItem("Testing1235")
|
||||
{
|
||||
Translations = new List<IDictionaryTranslation>
|
||||
{
|
||||
new DictionaryTranslation(ServiceContext.LocalizationService.GetLanguageByCultureCode("en-US"), "Hello world")
|
||||
}
|
||||
};
|
||||
|
||||
repository.AddOrUpdate(dictionaryItem);
|
||||
unitOfWork.Commit();
|
||||
|
||||
//re-get
|
||||
dictionaryItem = repository.Get(dictionaryItem.Key);
|
||||
|
||||
// Assert
|
||||
Assert.That(dictionaryItem, Is.Not.Null);
|
||||
Assert.That(dictionaryItem.ItemKey, Is.EqualTo("Testing1235"));
|
||||
Assert.That(dictionaryItem.Translations.Any(), Is.True);
|
||||
Assert.That(dictionaryItem.Translations.Any(x => x == null), Is.False);
|
||||
Assert.That(dictionaryItem.Translations.First().Value, Is.EqualTo("Hello world"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Can_Perform_Get_On_DictionaryRepository()
|
||||
{
|
||||
@@ -286,8 +354,8 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
var languageRepository = new LanguageRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>());
|
||||
var repository = new DictionaryRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>(), languageRepository);
|
||||
var languageRepository = new LanguageRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
var repository = new DictionaryRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), new SqlCeSyntaxProvider(), languageRepository);
|
||||
|
||||
var languageNo = new Language("nb-NO") { CultureName = "nb-NO" };
|
||||
ServiceContext.LocalizationService.Save(languageNo);
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
using System.Linq;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Persistence;
|
||||
@@ -26,7 +28,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
|
||||
private LanguageRepository CreateRepository(IDatabaseUnitOfWork unitOfWork)
|
||||
{
|
||||
return new LanguageRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>());
|
||||
return new LanguageRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -62,6 +64,58 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Can_Perform_Get_By_Iso_Code_On_LanguageRepository()
|
||||
{
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = CreateRepository(unitOfWork))
|
||||
{
|
||||
var au = CultureInfo.GetCultureInfo("en-AU");
|
||||
var language = (ILanguage)new Language(au.Name)
|
||||
{
|
||||
CultureName = au.DisplayName
|
||||
};
|
||||
repository.AddOrUpdate(language);
|
||||
unitOfWork.Commit();
|
||||
|
||||
//re-get
|
||||
language = repository.GetByIsoCode(au.Name);
|
||||
|
||||
// Assert
|
||||
Assert.That(language, Is.Not.Null);
|
||||
Assert.That(language.HasIdentity, Is.True);
|
||||
Assert.That(language.CultureName, Is.EqualTo(au.DisplayName));
|
||||
Assert.That(language.IsoCode, Is.EqualTo(au.Name));
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Can_Perform_Get_By_Culture_Name_On_LanguageRepository()
|
||||
{
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = CreateRepository(unitOfWork))
|
||||
{
|
||||
var au = CultureInfo.GetCultureInfo("en-AU");
|
||||
var language = (ILanguage)new Language(au.Name)
|
||||
{
|
||||
CultureName = au.DisplayName
|
||||
};
|
||||
repository.AddOrUpdate(language);
|
||||
unitOfWork.Commit();
|
||||
|
||||
//re-get
|
||||
language = repository.GetByCultureName(au.DisplayName);
|
||||
|
||||
// Assert
|
||||
Assert.That(language, Is.Not.Null);
|
||||
Assert.That(language.HasIdentity, Is.True);
|
||||
Assert.That(language.CultureName, Is.EqualTo(au.DisplayName));
|
||||
Assert.That(language.IsoCode, Is.EqualTo(au.Name));
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Get_WhenIdDoesntExist_ReturnsNull()
|
||||
{
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
using System.Linq;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Persistence;
|
||||
@@ -33,7 +34,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
|
||||
// Act
|
||||
using (var repository = new MacroRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>()))
|
||||
using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>()))
|
||||
{
|
||||
var macro = new Macro("test1", "Test", "~/usercontrol/blah.ascx", "MyAssembly", "test.xslt", "~/views/macropartials/test.cshtml");
|
||||
repository.AddOrUpdate(macro);
|
||||
@@ -51,7 +52,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
|
||||
// Act
|
||||
using (var repository = new MacroRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>()))
|
||||
using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>()))
|
||||
{
|
||||
var macro = repository.Get(1);
|
||||
macro.Alias = "test2";
|
||||
@@ -69,7 +70,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
|
||||
// Act
|
||||
using (var repository = new MacroRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>()))
|
||||
using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>()))
|
||||
{
|
||||
// Assert
|
||||
Assert.That(repository, Is.Not.Null);
|
||||
@@ -82,7 +83,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new MacroRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>()))
|
||||
using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>()))
|
||||
{
|
||||
// Act
|
||||
var macro = repository.Get(1);
|
||||
@@ -112,7 +113,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new MacroRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>()))
|
||||
using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>()))
|
||||
{
|
||||
// Act
|
||||
var macros = repository.GetAll();
|
||||
@@ -129,7 +130,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new MacroRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>()))
|
||||
using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>()))
|
||||
{
|
||||
// Act
|
||||
var query = Query<IMacro>.Builder.Where(x => x.Alias.ToUpper() == "TEST1");
|
||||
@@ -146,7 +147,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new MacroRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>()))
|
||||
using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>()))
|
||||
{
|
||||
// Act
|
||||
var query = Query<IMacro>.Builder.Where(x => x.Name.StartsWith("Test"));
|
||||
@@ -163,7 +164,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new MacroRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>()))
|
||||
using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>()))
|
||||
{
|
||||
// Act
|
||||
var macro = new Macro("test", "Test", "~/usercontrol/blah.ascx", "MyAssembly", "test.xslt", "~/views/macropartials/test.cshtml");
|
||||
@@ -184,7 +185,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new MacroRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>()))
|
||||
using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>()))
|
||||
{
|
||||
// Act
|
||||
var macro = repository.Get(2);
|
||||
@@ -225,7 +226,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new MacroRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>()))
|
||||
using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>()))
|
||||
{
|
||||
// Act
|
||||
var macro = repository.Get(3);
|
||||
@@ -246,7 +247,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new MacroRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>()))
|
||||
using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>()))
|
||||
{
|
||||
// Act
|
||||
var exists = repository.Exists(3);
|
||||
@@ -264,7 +265,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new MacroRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>()))
|
||||
using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>()))
|
||||
{
|
||||
var macro = repository.Get(1);
|
||||
macro.Properties.Add(new MacroProperty("new1", "New1", 3, "test"));
|
||||
@@ -291,7 +292,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new MacroRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>()))
|
||||
using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>()))
|
||||
{
|
||||
var macro = new Macro("newmacro", "A new macro", "~/usercontrol/test1.ascx", "MyAssembly1", "test1.xslt", "~/views/macropartials/test1.cshtml");
|
||||
macro.Properties.Add(new MacroProperty("blah1", "New1", 4, "test.editor"));
|
||||
@@ -316,7 +317,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new MacroRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>()))
|
||||
using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>()))
|
||||
{
|
||||
var macro = new Macro("newmacro", "A new macro", "~/usercontrol/test1.ascx", "MyAssembly1", "test1.xslt", "~/views/macropartials/test1.cshtml");
|
||||
macro.Properties.Add(new MacroProperty("blah1", "New1", 4, "test.editor"));
|
||||
@@ -341,7 +342,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new MacroRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>()))
|
||||
using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>()))
|
||||
{
|
||||
var macro = new Macro("newmacro", "A new macro", "~/usercontrol/test1.ascx", "MyAssembly1", "test1.xslt", "~/views/macropartials/test1.cshtml");
|
||||
var prop1 = new MacroProperty("blah1", "New1", 4, "test.editor");
|
||||
@@ -372,7 +373,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new MacroRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>()))
|
||||
using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>()))
|
||||
{
|
||||
var macro = repository.Get(1);
|
||||
macro.Properties.Add(new MacroProperty("new1", "New1", 3, "test"));
|
||||
@@ -400,7 +401,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new MacroRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>()))
|
||||
using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>()))
|
||||
{
|
||||
var macro = repository.Get(1);
|
||||
macro.Properties.Add(new MacroProperty("new1", "New1", 3, "test"));
|
||||
@@ -429,7 +430,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
{
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
using (var unitOfWork = provider.GetUnitOfWork())
|
||||
using (var repository = new MacroRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>()))
|
||||
using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>()))
|
||||
{
|
||||
repository.AddOrUpdate(new Macro("test1", "Test1", "~/usercontrol/test1.ascx", "MyAssembly1", "test1.xslt", "~/views/macropartials/test1.cshtml"));
|
||||
repository.AddOrUpdate(new Macro("test2", "Test2", "~/usercontrol/test2.ascx", "MyAssembly2", "test2.xslt", "~/views/macropartials/test2.cshtml"));
|
||||
|
||||
@@ -40,9 +40,9 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
|
||||
private MediaRepository CreateRepository(IDatabaseUnitOfWork unitOfWork, out MediaTypeRepository mediaTypeRepository)
|
||||
{
|
||||
mediaTypeRepository = new MediaTypeRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>());
|
||||
var tagRepository = new TagRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>());
|
||||
var repository = new MediaRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), mediaTypeRepository, tagRepository);
|
||||
mediaTypeRepository = new MediaTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
var repository = new MediaRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), mediaTypeRepository, tagRepository);
|
||||
return repository;
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
|
||||
private MediaTypeRepository CreateRepository(IDatabaseUnitOfWork unitOfWork)
|
||||
{
|
||||
return new MediaTypeRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>());
|
||||
return new MediaTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
||||
@@ -35,10 +35,10 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
|
||||
private MemberRepository CreateRepository(IDatabaseUnitOfWork unitOfWork, out MemberTypeRepository memberTypeRepository, out MemberGroupRepository memberGroupRepository)
|
||||
{
|
||||
memberTypeRepository = new MemberTypeRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>());
|
||||
memberGroupRepository = new MemberGroupRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), CacheHelper.CreateDisabledCacheHelper());
|
||||
var tagRepo = new TagRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>());
|
||||
var repository = new MemberRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), memberTypeRepository, memberGroupRepository, tagRepo);
|
||||
memberTypeRepository = new MemberTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
memberGroupRepository = new MemberGroupRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), CacheHelper.CreateDisabledCacheHelper());
|
||||
var tagRepo = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
var repository = new MemberRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), memberTypeRepository, memberGroupRepository, tagRepo);
|
||||
return repository;
|
||||
}
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
|
||||
private MemberTypeRepository CreateRepository(IDatabaseUnitOfWork unitOfWork)
|
||||
{
|
||||
return new MemberTypeRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>());
|
||||
return new MemberTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
||||
@@ -32,8 +32,8 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
|
||||
private RelationRepository CreateRepository(IDatabaseUnitOfWork unitOfWork, out RelationTypeRepository relationTypeRepository)
|
||||
{
|
||||
relationTypeRepository = new RelationTypeRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>());
|
||||
var repository = new RelationRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), relationTypeRepository);
|
||||
relationTypeRepository = new RelationTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
var repository = new RelationRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), relationTypeRepository);
|
||||
return repository;
|
||||
}
|
||||
|
||||
@@ -281,8 +281,8 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
var relationTypeRepository = new RelationTypeRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>());
|
||||
var relationRepository = new RelationRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), relationTypeRepository);
|
||||
var relationTypeRepository = new RelationTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
var relationRepository = new RelationRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), relationTypeRepository);
|
||||
|
||||
relationTypeRepository.AddOrUpdate(relateContent);
|
||||
relationTypeRepository.AddOrUpdate(relateContentType);
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
|
||||
private RelationTypeRepository CreateRepository(IDatabaseUnitOfWork unitOfWork)
|
||||
{
|
||||
return new RelationTypeRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>());
|
||||
return new RelationTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -248,7 +248,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
var repository = new RelationTypeRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>());
|
||||
var repository = new RelationTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
|
||||
repository.AddOrUpdate(relateContent);//Id 2
|
||||
repository.AddOrUpdate(relateContentType);//Id 3
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.Data.SqlServerCe;
|
||||
using System.Linq;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Persistence.Caching;
|
||||
@@ -27,7 +28,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
|
||||
private ServerRegistrationRepository CreateRepositor(IDatabaseUnitOfWork unitOfWork)
|
||||
{
|
||||
return new ServerRegistrationRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>());
|
||||
return new ServerRegistrationRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -245,7 +246,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
{
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
using (var unitOfWork = provider.GetUnitOfWork())
|
||||
using (var repository = new ServerRegistrationRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>()))
|
||||
using (var repository = new ServerRegistrationRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>()))
|
||||
{
|
||||
repository.AddOrUpdate(new ServerRegistration("http://localhost", "COMPUTER1", DateTime.Now) { IsActive = true });
|
||||
repository.AddOrUpdate(new ServerRegistration("http://www.mydomain.com", "COMPUTER2", DateTime.Now));
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
|
||||
private TagRepository CreateRepository(IDatabaseUnitOfWork unitOfWork)
|
||||
{
|
||||
var tagRepository = new TagRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>());
|
||||
var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
return tagRepository;
|
||||
}
|
||||
|
||||
@@ -953,18 +953,18 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
|
||||
private ContentRepository CreateContentRepository(IDatabaseUnitOfWork unitOfWork, out ContentTypeRepository contentTypeRepository)
|
||||
{
|
||||
var templateRepository = new TemplateRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>(), Mock.Of<IFileSystem>(), Mock.Of<IFileSystem>(), Mock.Of<ITemplatesSection>());
|
||||
var tagRepository = new TagRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>());
|
||||
contentTypeRepository = new ContentTypeRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>(), templateRepository);
|
||||
var repository = new ContentRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), contentTypeRepository, templateRepository, tagRepository, CacheHelper.CreateDisabledCacheHelper());
|
||||
var templateRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), Mock.Of<IFileSystem>(), Mock.Of<IFileSystem>(), Mock.Of<ITemplatesSection>());
|
||||
var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
contentTypeRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), templateRepository);
|
||||
var repository = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), contentTypeRepository, templateRepository, tagRepository, CacheHelper.CreateDisabledCacheHelper());
|
||||
return repository;
|
||||
}
|
||||
|
||||
private MediaRepository CreateMediaRepository(IDatabaseUnitOfWork unitOfWork, out MediaTypeRepository mediaTypeRepository)
|
||||
{
|
||||
var tagRepository = new TagRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>());
|
||||
mediaTypeRepository = new MediaTypeRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>());
|
||||
var repository = new MediaRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), mediaTypeRepository, tagRepository);
|
||||
var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
mediaTypeRepository = new MediaTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
var repository = new MediaRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), mediaTypeRepository, tagRepository);
|
||||
return repository;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
|
||||
// Act
|
||||
using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
using (var repository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc)))
|
||||
{
|
||||
|
||||
@@ -76,7 +76,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
using (var repository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc)))
|
||||
{
|
||||
// Act
|
||||
@@ -102,7 +102,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
using (var repository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc)))
|
||||
{
|
||||
// Act
|
||||
@@ -129,7 +129,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
using (var repository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc)))
|
||||
{
|
||||
//NOTE: This has to be persisted first
|
||||
@@ -159,7 +159,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
using (var repository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc)))
|
||||
{
|
||||
// Act
|
||||
@@ -180,7 +180,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
using (var repository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc)))
|
||||
{
|
||||
// Act
|
||||
@@ -208,7 +208,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
using (var repository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc)))
|
||||
{
|
||||
//NOTE: This has to be persisted first
|
||||
@@ -239,7 +239,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
using (var repository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc)))
|
||||
{
|
||||
// Act
|
||||
@@ -269,7 +269,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
using (var repository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc)))
|
||||
{
|
||||
// Act
|
||||
@@ -305,7 +305,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
using (var repository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc)))
|
||||
{
|
||||
// Act
|
||||
@@ -336,7 +336,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
using (var repository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc)))
|
||||
{
|
||||
// Act
|
||||
@@ -367,7 +367,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
using (var repository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc)))
|
||||
{
|
||||
var template = new Template("test", "test", _viewsFileSystem, _masterPageFileSystem, Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc))
|
||||
@@ -397,7 +397,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
using (var repository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc)))
|
||||
{
|
||||
var template = new Template("test", "test", _viewsFileSystem, _masterPageFileSystem, Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc))
|
||||
@@ -428,12 +428,12 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
|
||||
using (var templateRepository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
using (var templateRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc)))
|
||||
{
|
||||
var tagRepository = new TagRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>());
|
||||
var contentTypeRepository = new ContentTypeRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>(), templateRepository);
|
||||
var contentRepo = new ContentRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), contentTypeRepository, templateRepository, tagRepository, CacheHelper.CreateDisabledCacheHelper());
|
||||
var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
var contentTypeRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), templateRepository);
|
||||
var contentRepo = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), contentTypeRepository, templateRepository, tagRepository, CacheHelper.CreateDisabledCacheHelper());
|
||||
|
||||
using (contentRepo)
|
||||
{
|
||||
@@ -473,7 +473,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
using (var repository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc)))
|
||||
{
|
||||
var parent = new Template("parent", "parent", _viewsFileSystem, _masterPageFileSystem, Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc))
|
||||
@@ -515,7 +515,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
using (var repository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc)))
|
||||
{
|
||||
var parent = new Template("parent", "parent", _viewsFileSystem, _masterPageFileSystem, Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc))
|
||||
@@ -614,7 +614,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
using (var repository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc)))
|
||||
{
|
||||
var parent = new Template("parent", "parent", _viewsFileSystem, _masterPageFileSystem, Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc));
|
||||
@@ -679,7 +679,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
// Arrange
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
var unitOfWork = provider.GetUnitOfWork();
|
||||
using (var repository = new TemplateRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
using (var repository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), _masterPageFileSystem, _viewsFileSystem,
|
||||
Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc)))
|
||||
{
|
||||
var parent = new Template("parent", "parent", _viewsFileSystem, _masterPageFileSystem, Mock.Of<ITemplatesSection>(t => t.DefaultRenderingEngine == RenderingEngine.Mvc));
|
||||
|
||||
@@ -34,8 +34,8 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
|
||||
private UserRepository CreateRepository(IDatabaseUnitOfWork unitOfWork, out UserTypeRepository userTypeRepository)
|
||||
{
|
||||
userTypeRepository = new UserTypeRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>());
|
||||
var repository = new UserRepository(unitOfWork, NullCacheProvider.Current, Mock.Of<ILogger>(), userTypeRepository, CacheHelper.CreateDisabledCacheHelper());
|
||||
userTypeRepository = new UserTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
var repository = new UserRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>(), userTypeRepository, CacheHelper.CreateDisabledCacheHelper());
|
||||
return repository;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System.Linq;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Models.Membership;
|
||||
using Umbraco.Core.Persistence;
|
||||
@@ -31,7 +32,7 @@ namespace Umbraco.Tests.Persistence.Repositories
|
||||
|
||||
private UserTypeRepository CreateRepository(IDatabaseUnitOfWork unitOfWork)
|
||||
{
|
||||
return new UserTypeRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>());
|
||||
return new UserTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>());
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
||||
@@ -10,6 +10,7 @@ using Umbraco.Core.Models.Membership;
|
||||
using Umbraco.Core.ObjectResolution;
|
||||
using Umbraco.Core.Persistence;
|
||||
using Umbraco.Core.Persistence.Repositories;
|
||||
using Umbraco.Core.Persistence.SqlSyntax;
|
||||
using Umbraco.Core.Persistence.UnitOfWork;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
|
||||
@@ -23,8 +24,9 @@ namespace Umbraco.Tests.Persistence
|
||||
public void Setup()
|
||||
{
|
||||
RepositoryResolver.Current = new RepositoryResolver(
|
||||
new RepositoryFactory(true, //disable all repo caches for tests!
|
||||
new RepositoryFactory(CacheHelper.CreateDisabledCacheHelper(), //disable all repo caches for tests!
|
||||
Mock.Of<ILogger>(),
|
||||
new SqlCeSyntaxProvider(),
|
||||
SettingsForTests.GenerateMockSettings()));
|
||||
|
||||
Resolution.Freeze();
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System.Linq;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Persistence.Caching;
|
||||
@@ -26,7 +27,7 @@ namespace Umbraco.Tests.Services
|
||||
|
||||
var provider = new PetaPocoUnitOfWorkProvider(Logger);
|
||||
using (var unitOfWork = provider.GetUnitOfWork())
|
||||
using (var repository = new MacroRepository(unitOfWork, Mock.Of<IRepositoryCacheProvider>(), Mock.Of<ILogger>()))
|
||||
using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of<ILogger>()))
|
||||
{
|
||||
repository.AddOrUpdate(new Macro("test1", "Test1", "~/usercontrol/test1.ascx", "MyAssembly1", "test1.xslt", "~/views/macropartials/test1.cshtml"));
|
||||
repository.AddOrUpdate(new Macro("test2", "Test2", "~/usercontrol/test2.ascx", "MyAssembly2", "test2.xslt", "~/views/macropartials/test2.cshtml"));
|
||||
|
||||
@@ -75,8 +75,6 @@ namespace Umbraco.Tests.Services
|
||||
//do this 10x!
|
||||
for (var i = 0; i < 10; i++)
|
||||
{
|
||||
//clear the cache to make this test valid
|
||||
RuntimeCacheProvider.Current.Clear();
|
||||
|
||||
var published = new List<IContent>();
|
||||
//get all content items that are published
|
||||
@@ -97,8 +95,6 @@ namespace Umbraco.Tests.Services
|
||||
//do this 10x!
|
||||
for (var i = 0; i < 10; i++)
|
||||
{
|
||||
//clear the cache to make this test valid
|
||||
RuntimeCacheProvider.Current.Clear();
|
||||
|
||||
//get all content items that are published
|
||||
var published = contentSvc.GetAllPublished();
|
||||
@@ -122,8 +118,7 @@ namespace Umbraco.Tests.Services
|
||||
//do this 10x!
|
||||
for (var i = 0; i < 10; i++)
|
||||
{
|
||||
//clear the cache to make this test valid
|
||||
RuntimeCacheProvider.Current.Clear();
|
||||
|
||||
//get all content items that are published of this type
|
||||
var published = contentSvc.GetContentOfContentType(contentTypeId).Where(content => content.Published);
|
||||
Assert.AreEqual(countOfPublished, published.Count(x => x.ContentTypeId == contentTypeId));
|
||||
@@ -136,8 +131,6 @@ namespace Umbraco.Tests.Services
|
||||
//do this 10x!
|
||||
for (var i = 0; i < 10; i++)
|
||||
{
|
||||
//clear the cache to make this test valid
|
||||
RuntimeCacheProvider.Current.Clear();
|
||||
//get all content items that are published of this type
|
||||
var published = contentSvc.GetPublishedContentOfContentType(contentTypeId);
|
||||
Assert.AreEqual(countOfPublished, published.Count(x => x.ContentTypeId == contentTypeId));
|
||||
|
||||
@@ -205,8 +205,9 @@ namespace Umbraco.Tests.TestHelpers
|
||||
() => PluginManager.Current.ResolveDataTypes());
|
||||
|
||||
RepositoryResolver.Current = new RepositoryResolver(
|
||||
new RepositoryFactory(true, //disable all repo caches for tests!
|
||||
new RepositoryFactory(CacheHelper.CreateDisabledCacheHelper(), //disable all repo caches for tests!
|
||||
Logger,
|
||||
SqlSyntaxProvider,
|
||||
SettingsForTests.GenerateMockSettings()));
|
||||
|
||||
SqlSyntaxProvidersResolver.Current = new SqlSyntaxProvidersResolver(
|
||||
|
||||
@@ -61,8 +61,9 @@ namespace Umbraco.Tests.TestHelpers
|
||||
|
||||
|
||||
RepositoryResolver.Current = new RepositoryResolver(
|
||||
new RepositoryFactory(true,//disable all repo caches for tests!
|
||||
new RepositoryFactory(CacheHelper.CreateDisabledCacheHelper(),//disable all repo caches for tests!
|
||||
Logger,
|
||||
SyntaxProvider,
|
||||
Mock.Of<IUmbracoSettingsSection>()));
|
||||
|
||||
SqlSyntaxProvidersResolver.Current = new SqlSyntaxProvidersResolver(
|
||||
|
||||
@@ -126,8 +126,10 @@ namespace Umbraco.Web.Cache
|
||||
|
||||
public override void RefreshAll()
|
||||
{
|
||||
RuntimeCacheProvider.Current.Clear(typeof(IContent));
|
||||
RuntimeCacheProvider.Current.Clear(typeof(IContentType));
|
||||
//RuntimeCacheProvider.Current.Clear(typeof(IContent));
|
||||
//RuntimeCacheProvider.Current.Clear(typeof(IContentType));
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IContent>();
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IContentType>();
|
||||
|
||||
//all property type cache
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheByKeySearch(CacheKeys.PropertyTypeCacheKey);
|
||||
@@ -212,18 +214,18 @@ namespace Umbraco.Web.Cache
|
||||
{
|
||||
if (payloads.Any(x => x.Type == typeof (IContentType).Name))
|
||||
{
|
||||
RuntimeCacheProvider.Current.Clear(typeof(IContent));
|
||||
RuntimeCacheProvider.Current.Clear(typeof(IContentType));
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IContent>();
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IContentType>();
|
||||
}
|
||||
if (payloads.Any(x => x.Type == typeof(IMediaType).Name))
|
||||
{
|
||||
RuntimeCacheProvider.Current.Clear(typeof(IMedia));
|
||||
RuntimeCacheProvider.Current.Clear(typeof(IMediaType));
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IMedia>();
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IMediaType>();
|
||||
}
|
||||
if (payloads.Any(x => x.Type == typeof(IMemberType).Name))
|
||||
{
|
||||
RuntimeCacheProvider.Current.Clear(typeof(IMember));
|
||||
RuntimeCacheProvider.Current.Clear(typeof(IMemberType));
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IMember>();
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IMemberType>();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -119,12 +119,19 @@ namespace Umbraco.Web.Cache
|
||||
//we need to clear the ContentType runtime cache since that is what caches the
|
||||
// db data type to store the value against and anytime a datatype changes, this also might change
|
||||
// we basically need to clear all sorts of runtime caches here because so many things depend upon a data type
|
||||
RuntimeCacheProvider.Current.Clear(typeof(IContent));
|
||||
RuntimeCacheProvider.Current.Clear(typeof (IContentType));
|
||||
RuntimeCacheProvider.Current.Clear(typeof(IMedia));
|
||||
RuntimeCacheProvider.Current.Clear(typeof(IMediaType));
|
||||
RuntimeCacheProvider.Current.Clear(typeof(IMember));
|
||||
RuntimeCacheProvider.Current.Clear(typeof(IMemberType));
|
||||
|
||||
//RuntimeCacheProvider.Current.Clear(typeof(IContent));
|
||||
//RuntimeCacheProvider.Current.Clear(typeof (IContentType));
|
||||
//RuntimeCacheProvider.Current.Clear(typeof(IMedia));
|
||||
//RuntimeCacheProvider.Current.Clear(typeof(IMediaType));
|
||||
//RuntimeCacheProvider.Current.Clear(typeof(IMember));
|
||||
//RuntimeCacheProvider.Current.Clear(typeof(IMemberType));
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IContent>();
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IContentType>();
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IMedia>();
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IMediaType>();
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IMember>();
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IMemberType>();
|
||||
|
||||
payloads.ForEach(payload =>
|
||||
{
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Cache;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Persistence.Caching;
|
||||
@@ -27,7 +28,8 @@ namespace Umbraco.Web.Cache
|
||||
|
||||
public override void Refresh(int id)
|
||||
{
|
||||
RuntimeCacheProvider.Current.Clear(typeof(IDictionaryItem));
|
||||
//RuntimeCacheProvider.Current.Clear(typeof(IDictionaryItem));
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IDictionaryItem>();
|
||||
//global::umbraco.cms.businesslogic.Dictionary.ClearCache();
|
||||
//when a dictionary item is updated we must also clear the text cache!
|
||||
//global::umbraco.cms.businesslogic.language.Item.ClearCache();
|
||||
@@ -36,7 +38,8 @@ namespace Umbraco.Web.Cache
|
||||
|
||||
public override void Remove(int id)
|
||||
{
|
||||
RuntimeCacheProvider.Current.Clear(typeof(IDictionaryItem));
|
||||
//RuntimeCacheProvider.Current.Clear(typeof(IDictionaryItem));
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IDictionaryItem>();
|
||||
//global::umbraco.cms.businesslogic.Dictionary.ClearCache();
|
||||
//when a dictionary item is removed we must also clear the text cache!
|
||||
//global::umbraco.cms.businesslogic.language.Item.ClearCache();
|
||||
|
||||
@@ -28,13 +28,15 @@ namespace Umbraco.Web.Cache
|
||||
|
||||
public override void Refresh(int id)
|
||||
{
|
||||
RuntimeCacheProvider.Current.Clear(typeof(ILanguage));
|
||||
//RuntimeCacheProvider.Current.Clear(typeof(ILanguage));
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<ILanguage>();
|
||||
base.Refresh(id);
|
||||
}
|
||||
|
||||
public override void Remove(int id)
|
||||
{
|
||||
RuntimeCacheProvider.Current.Clear(typeof(ILanguage));
|
||||
//RuntimeCacheProvider.Current.Clear(typeof(ILanguage));
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<ILanguage>();
|
||||
//when a language is removed we must also clear the text cache!
|
||||
//global::umbraco.cms.businesslogic.language.Item.ClearCache();
|
||||
base.Remove(id);
|
||||
|
||||
@@ -5,6 +5,7 @@ using Umbraco.Core.Cache;
|
||||
using Umbraco.Core.Models;
|
||||
using umbraco;
|
||||
using Umbraco.Core.Persistence.Caching;
|
||||
using Umbraco.Core.Persistence.Repositories;
|
||||
using umbraco.interfaces;
|
||||
using System.Linq;
|
||||
using Macro = umbraco.cms.businesslogic.macro.Macro;
|
||||
@@ -170,12 +171,13 @@ namespace Umbraco.Web.Cache
|
||||
|
||||
public override void RefreshAll()
|
||||
{
|
||||
ApplicationContext.Current.ApplicationCache.ClearCacheObjectTypes<MacroCacheContent>();
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<MacroCacheContent>();
|
||||
GetAllMacroCacheKeys().ForEach(
|
||||
prefix =>
|
||||
ApplicationContext.Current.ApplicationCache.ClearCacheByKeySearch(prefix));
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheByKeySearch(prefix));
|
||||
|
||||
RuntimeCacheProvider.Current.Clear(typeof (IMacro));
|
||||
//RuntimeCacheProvider.Current.Clear(typeof (IMacro));
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IMacro>();
|
||||
|
||||
base.RefreshAll();
|
||||
}
|
||||
@@ -188,9 +190,10 @@ namespace Umbraco.Web.Cache
|
||||
{
|
||||
GetCacheKeysForAlias(payload.Alias).ForEach(
|
||||
alias =>
|
||||
ApplicationContext.Current.ApplicationCache.ClearCacheByKeySearch(alias));
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheByKeySearch(alias));
|
||||
|
||||
RuntimeCacheProvider.Current.Delete(typeof(IMacro), payload.Id);
|
||||
//RuntimeCacheProvider.Current.Delete(typeof(IMacro), payload.Id);
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheItem(RepositoryBase.GetCacheIdKey<IMacro>(payload.Id));
|
||||
});
|
||||
|
||||
base.Refresh(jsonPayload);
|
||||
|
||||
@@ -8,6 +8,7 @@ using Umbraco.Core.Events;
|
||||
using Umbraco.Core.IO;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Persistence.Caching;
|
||||
using Umbraco.Core.Persistence.Repositories;
|
||||
using umbraco.interfaces;
|
||||
using System.Linq;
|
||||
|
||||
@@ -160,7 +161,7 @@ namespace Umbraco.Web.Cache
|
||||
//if there's no path, then just use id (this will occur on permanent deletion like emptying recycle bin)
|
||||
if (payload.Path.IsNullOrWhiteSpace())
|
||||
{
|
||||
ApplicationContext.Current.ApplicationCache.ClearCacheByKeySearch(
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheByKeySearch(
|
||||
string.Format("{0}_{1}", CacheKeys.MediaCacheKey, payload.Id));
|
||||
}
|
||||
else
|
||||
@@ -170,15 +171,17 @@ namespace Umbraco.Web.Cache
|
||||
int idPartAsInt;
|
||||
if (int.TryParse(idPart, out idPartAsInt))
|
||||
{
|
||||
RuntimeCacheProvider.Current.Delete(typeof(IMedia), idPartAsInt);
|
||||
//RuntimeCacheProvider.Current.Delete(typeof(IMedia), idPartAsInt);
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheItem(
|
||||
RepositoryBase.GetCacheIdKey<IMedia>(idPartAsInt));
|
||||
}
|
||||
|
||||
ApplicationContext.Current.ApplicationCache.ClearCacheByKeySearch(
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheByKeySearch(
|
||||
string.Format("{0}_{1}_True", CacheKeys.MediaCacheKey, idPart));
|
||||
|
||||
// Also clear calls that only query this specific item!
|
||||
if (idPart == payload.Id.ToString(CultureInfo.InvariantCulture))
|
||||
ApplicationContext.Current.ApplicationCache.ClearCacheByKeySearch(
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheByKeySearch(
|
||||
string.Format("{0}_{1}", CacheKeys.MediaCacheKey, payload.Id));
|
||||
|
||||
}
|
||||
|
||||
@@ -2,8 +2,10 @@
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Cache;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Models.Membership;
|
||||
using Umbraco.Core.Persistence.Caching;
|
||||
using umbraco.cms.businesslogic.member;
|
||||
using Umbraco.Core.Persistence.Repositories;
|
||||
using umbraco.interfaces;
|
||||
|
||||
namespace Umbraco.Web.Cache
|
||||
@@ -60,12 +62,13 @@ namespace Umbraco.Web.Cache
|
||||
{
|
||||
ApplicationContext.Current.ApplicationCache.ClearPartialViewCache();
|
||||
|
||||
ApplicationContext.Current.ApplicationCache.
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.
|
||||
ClearCacheByKeySearch(string.Format("{0}_{1}", CacheKeys.MemberLibraryCacheKey, id));
|
||||
ApplicationContext.Current.ApplicationCache.
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.
|
||||
ClearCacheByKeySearch(string.Format("{0}{1}", CacheKeys.MemberBusinessLogicCacheKey, id));
|
||||
|
||||
RuntimeCacheProvider.Current.Delete(typeof(IMember), id);
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheItem(RepositoryBase.GetCacheIdKey<IMember>(id));
|
||||
//RuntimeCacheProvider.Current.Delete(typeof(IMember), id);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ using Umbraco.Core;
|
||||
using Umbraco.Core.Cache;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Persistence.Caching;
|
||||
using Umbraco.Core.Persistence.Repositories;
|
||||
|
||||
namespace Umbraco.Web.Cache
|
||||
{
|
||||
@@ -109,7 +110,8 @@ namespace Umbraco.Web.Cache
|
||||
{
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache
|
||||
.ClearCacheByKeySearch(string.Format("{0}.{1}", typeof(IMemberGroup).FullName, payload.Name));
|
||||
RuntimeCacheProvider.Current.Delete(typeof(IMemberGroup), payload.Id);
|
||||
//RuntimeCacheProvider.Current.Delete(typeof(IMemberGroup), payload.Id);
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheItem(RepositoryBase.GetCacheIdKey<IMemberGroup>(payload.Id));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -52,15 +52,16 @@ namespace Umbraco.Web.Cache
|
||||
|
||||
private void RemoveFromCache(int id)
|
||||
{
|
||||
ApplicationContext.Current.ApplicationCache.ClearCacheItem(
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheItem(
|
||||
string.Format("{0}{1}", CacheKeys.TemplateFrontEndCacheKey, id));
|
||||
|
||||
ApplicationContext.Current.ApplicationCache.ClearCacheItem(
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheItem(
|
||||
string.Format("{0}{1}", CacheKeys.TemplateBusinessLogicCacheKey, id));
|
||||
|
||||
//need to clear the runtime cache for template instances
|
||||
//NOTE: This is temp until we implement the correct ApplicationCache and then we can remove the RuntimeCache, etc...
|
||||
RuntimeCacheProvider.Current.Clear(typeof(ITemplate));
|
||||
//RuntimeCacheProvider.Current.Clear(typeof(ITemplate));
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<ITemplate>();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
using System;
|
||||
using System.Web.Script.Serialization;
|
||||
using umbraco;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Cache;
|
||||
using Umbraco.Core.Models;
|
||||
using System.Linq;
|
||||
using Umbraco.Core.Persistence.Caching;
|
||||
using Umbraco.Core.Persistence.Repositories;
|
||||
using Umbraco.Core.Sync;
|
||||
|
||||
namespace Umbraco.Web.Cache
|
||||
@@ -75,34 +77,39 @@ namespace Umbraco.Web.Cache
|
||||
|
||||
public override void RefreshAll()
|
||||
{
|
||||
RuntimeCacheProvider.Current.Clear(typeof(IContent));
|
||||
//RuntimeCacheProvider.Current.Clear(typeof(IContent));
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IContent>();
|
||||
base.RefreshAll();
|
||||
}
|
||||
|
||||
public override void Refresh(int id)
|
||||
{
|
||||
RuntimeCacheProvider.Current.Delete(typeof(IContent), id);
|
||||
//RuntimeCacheProvider.Current.Delete(typeof(IContent), id);
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheItem(RepositoryBase.GetCacheIdKey<IContent>(id));
|
||||
content.Instance.UpdateSortOrder(id);
|
||||
base.Refresh(id);
|
||||
}
|
||||
|
||||
public override void Remove(int id)
|
||||
{
|
||||
RuntimeCacheProvider.Current.Delete(typeof(IContent), id);
|
||||
//RuntimeCacheProvider.Current.Delete(typeof(IContent), id);
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheItem(RepositoryBase.GetCacheIdKey<IContent>(id));
|
||||
base.Remove(id);
|
||||
}
|
||||
|
||||
|
||||
public override void Refresh(IContent instance)
|
||||
{
|
||||
RuntimeCacheProvider.Current.Delete(typeof(IContent), instance.Id);
|
||||
//RuntimeCacheProvider.Current.Delete(typeof(IContent), instance.Id);
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheItem(RepositoryBase.GetCacheIdKey<IContent>(instance.Id));
|
||||
content.Instance.UpdateSortOrder(instance);
|
||||
base.Refresh(instance);
|
||||
}
|
||||
|
||||
public override void Remove(IContent instance)
|
||||
{
|
||||
RuntimeCacheProvider.Current.Delete(typeof(IContent), instance.Id);
|
||||
//RuntimeCacheProvider.Current.Delete(typeof(IContent), instance.Id);
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheItem(RepositoryBase.GetCacheIdKey<IContent>(instance.Id));
|
||||
base.Remove(instance);
|
||||
}
|
||||
|
||||
@@ -114,7 +121,8 @@ namespace Umbraco.Web.Cache
|
||||
{
|
||||
foreach (var payload in DeserializeFromJsonPayload(jsonPayload))
|
||||
{
|
||||
RuntimeCacheProvider.Current.Delete(typeof(IContent), payload.Id);
|
||||
//RuntimeCacheProvider.Current.Delete(typeof(IContent), payload.Id);
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheItem(RepositoryBase.GetCacheIdKey<IContent>(payload.Id));
|
||||
content.Instance.UpdateSortOrder(payload.Id);
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ using Umbraco.Core;
|
||||
using Umbraco.Core.Cache;
|
||||
using Umbraco.Core.Models.Membership;
|
||||
using Umbraco.Core.Persistence.Caching;
|
||||
using Umbraco.Core.Persistence.Repositories;
|
||||
using umbraco.interfaces;
|
||||
|
||||
namespace Umbraco.Web.Cache
|
||||
@@ -29,9 +30,10 @@ namespace Umbraco.Web.Cache
|
||||
|
||||
public override void RefreshAll()
|
||||
{
|
||||
RuntimeCacheProvider.Current.Clear(typeof(IUser));
|
||||
ApplicationContext.Current.ApplicationCache.ClearCacheByKeySearch(CacheKeys.UserPermissionsCacheKey);
|
||||
ApplicationContext.Current.ApplicationCache.ClearCacheByKeySearch(CacheKeys.UserContextCacheKey);
|
||||
//RuntimeCacheProvider.Current.Clear(typeof(IUser));
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IUser>();
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheByKeySearch(CacheKeys.UserPermissionsCacheKey);
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheByKeySearch(CacheKeys.UserContextCacheKey);
|
||||
base.RefreshAll();
|
||||
}
|
||||
|
||||
@@ -43,13 +45,14 @@ namespace Umbraco.Web.Cache
|
||||
|
||||
public override void Remove(int id)
|
||||
{
|
||||
RuntimeCacheProvider.Current.Delete(typeof (IUser), id);
|
||||
//RuntimeCacheProvider.Current.Delete(typeof (IUser), id);
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheItem(RepositoryBase.GetCacheIdKey<IUser>(id));
|
||||
|
||||
ApplicationContext.Current.ApplicationCache.ClearCacheItem(string.Format("{0}{1}", CacheKeys.UserPermissionsCacheKey, id));
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheItem(string.Format("{0}{1}", CacheKeys.UserPermissionsCacheKey, id));
|
||||
|
||||
//we need to clear all UserContextCacheKey since we cannot invalidate based on ID since the cache is done so based
|
||||
//on the current contextId stored in the database
|
||||
ApplicationContext.Current.ApplicationCache.ClearCacheByKeySearch(CacheKeys.UserContextCacheKey);
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheByKeySearch(CacheKeys.UserContextCacheKey);
|
||||
|
||||
base.Remove(id);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ using Umbraco.Core;
|
||||
using Umbraco.Core.Cache;
|
||||
using Umbraco.Core.Models.Membership;
|
||||
using Umbraco.Core.Persistence.Caching;
|
||||
using Umbraco.Core.Persistence.Repositories;
|
||||
|
||||
namespace Umbraco.Web.Cache
|
||||
{
|
||||
@@ -28,19 +29,22 @@ namespace Umbraco.Web.Cache
|
||||
|
||||
public override void RefreshAll()
|
||||
{
|
||||
RuntimeCacheProvider.Current.Clear(typeof (IUserType));
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IUserType>();
|
||||
//RuntimeCacheProvider.Current.Clear(typeof (IUserType));
|
||||
base.RefreshAll();
|
||||
}
|
||||
|
||||
public override void Refresh(int id)
|
||||
{
|
||||
RuntimeCacheProvider.Current.Delete(typeof(IUserType), id);
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheItem(RepositoryBase.GetCacheIdKey<IUserType>(id));
|
||||
//RuntimeCacheProvider.Current.Delete(typeof(IUserType), id);
|
||||
base.Refresh(id);
|
||||
}
|
||||
|
||||
public override void Remove(int id)
|
||||
{
|
||||
RuntimeCacheProvider.Current.Delete(typeof(IUserType), id);
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheItem(RepositoryBase.GetCacheIdKey<IUserType>(id));
|
||||
//RuntimeCacheProvider.Current.Delete(typeof(IUserType), id);
|
||||
base.Remove(id);
|
||||
}
|
||||
|
||||
|
||||
@@ -4,10 +4,12 @@ using System.Web.Caching;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Cache;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Models.Membership;
|
||||
using Umbraco.Core.Models.Rdbms;
|
||||
using Umbraco.Core.Persistence.Caching;
|
||||
using Umbraco.Core.Persistence.Querying;
|
||||
using Umbraco.Core.Persistence.Repositories;
|
||||
using umbraco.DataLayer;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -819,7 +821,8 @@ namespace umbraco.BusinessLogic
|
||||
public void FlushFromCache()
|
||||
{
|
||||
OnFlushingFromCache(EventArgs.Empty);
|
||||
RuntimeCacheProvider.Current.Clear(typeof (IUser));
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IUser>();
|
||||
//RuntimeCacheProvider.Current.Clear(typeof (IUser));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -5,16 +5,17 @@ using System.Runtime.CompilerServices;
|
||||
using System.Threading;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Cache;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Persistence.Caching;
|
||||
using umbraco.BusinessLogic;
|
||||
using umbraco.cms.businesslogic.cache;
|
||||
using umbraco.cms.businesslogic.datatype;
|
||||
using umbraco.cms.businesslogic.language;
|
||||
using umbraco.cms.businesslogic.property;
|
||||
using umbraco.cms.businesslogic.web;
|
||||
using umbraco.cms.helpers;
|
||||
using umbraco.DataLayer;
|
||||
using umbraco.interfaces;
|
||||
using DataTypeDefinition = umbraco.cms.businesslogic.datatype.DataTypeDefinition;
|
||||
using Language = umbraco.cms.businesslogic.language.Language;
|
||||
|
||||
namespace umbraco.cms.businesslogic.propertytype
|
||||
{
|
||||
@@ -465,7 +466,13 @@ namespace umbraco.cms.businesslogic.propertytype
|
||||
//Ensure that DocumentTypes are reloaded from db by clearing cache - this similar to the Save method on DocumentType.
|
||||
//NOTE Would be nice if we could clear cache by type instead of emptying the entire cache.
|
||||
InMemoryCacheProvider.Current.Clear();
|
||||
RuntimeCacheProvider.Current.Clear();
|
||||
//RuntimeCacheProvider.Current.Clear();
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IContent>();
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IContentType>();
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IMedia>();
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IMediaType>();
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IMember>();
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IMemberType>();
|
||||
}
|
||||
|
||||
public static PropertyType GetPropertyType(int id)
|
||||
|
||||
@@ -392,7 +392,8 @@ namespace umbraco.cms.businesslogic.web
|
||||
ApplicationContext.Current.DatabaseContext.Database.Execute(
|
||||
"update cmsDocument set templateId = NULL where templateId = @TemplateId", new {TemplateId = templateId});
|
||||
//We need to clear cache for Documents since this is touching the database directly
|
||||
RuntimeCacheProvider.Current.Clear();
|
||||
//RuntimeCacheProvider.Current.Clear();
|
||||
ApplicationContext.Current.ApplicationCache.RuntimeCache.ClearCacheObjectTypes<IContent>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user