/// <inheritdoc /> public override TEntity?GetCached(TId id) { // get all from the cache -- and only the cache, then look for the entity DeepCloneableList <TEntity>?all = Cache.GetCacheItem <DeepCloneableList <TEntity> >(GetEntityTypeCacheKey()); TEntity?entity = all?.FirstOrDefault(x => _entityGetId(x)?.Equals(id) ?? false); // see note in InsertEntities - what we get here is the original // cached entity, not a clone, so we need to manually ensure it is deep-cloned. return((TEntity?)entity?.DeepClone()); }
/// <inheritdoc /> public override TEntity?Get(TId?id, Func <TId?, TEntity?> performGet, Func <TId[]?, IEnumerable <TEntity>?> performGetAll) { // get all from the cache, then look for the entity IEnumerable <TEntity> all = GetAllCached(performGetAll); TEntity?entity = all.FirstOrDefault(x => _entityGetId(x)?.Equals(id) ?? false); // see note in InsertEntities - what we get here is the original // cached entity, not a clone, so we need to manually ensure it is deep-cloned. return((TEntity?)entity?.DeepClone()); }