Ejemplo n.º 1
0
        private object GetOrAdd(Type type, IdAndMemberName idAndMemberName, object entity)
        {
            if (!settings.EnableCache && !ReturnPreviouslyLoadedEntity)
            {
                return(entity);
            }

            var    entitiesByIdAndMemberName = cache.GetOrAdd(type, t => new ConcurrentDictionary <IdAndMemberName, object>(concurrencyLevel: 2, capacity: 1));
            object entityFromCache           = entitiesByIdAndMemberName.GetOrAdd(idAndMemberName, k => entity);

            return(ReturnPreviouslyLoadedEntity ? entityFromCache : entity);
        }
Ejemplo n.º 2
0
        private bool TryGet(Type type, IdAndMemberName idAndMemberName, out object value)
        {
            if (!settings.EnableCache && !ReturnPreviouslyLoadedEntity)
            {
                value = null;
                return(false);
            }

            ConcurrentDictionary <IdAndMemberName, object> entitiesByIdAndMemberName;

            if (cache.TryGetValue(type, out entitiesByIdAndMemberName))
            {
                return(entitiesByIdAndMemberName.TryGetValue(idAndMemberName, out value));
            }

            value = null;
            return(false);
        }