/// <summary>
        /// 以 Id 取得資料
        /// </summary>
        /// <param name="id">The id.</param>
        /// <returns>Foo.</returns>
        public async Task <FooModel> GetAsync(Guid id)
        {
            var stepName = $"{nameof(CachedFooRepository)}.{nameof(this.GetAsync)}";

            using (ProfilingSession.Current.Step(stepName))
            {
                var cacheItem = await this.GetOrAddCacheItemAsync
                                (
                    cachekey : Cachekeys.Foo.Get.ToFormat(id),
                    cacheItemExpiration : CacheUtility.GetCacheItemExpiration5Min(),
                    source : async() =>
                {
                    var result = await this.FooRepository.GetAsync(id);
                    return(result);
                }
                                );

                return(cacheItem);
            }
        }
        /// <summary>
        /// 以 FooId 確認資料是否存在
        /// </summary>
        /// <param name="id">The id.</param>
        /// <returns></returns>
        public async Task <bool> IsExistsAsync(Guid id)
        {
            var stepName = $"{nameof(CachedFooRepository)}.{nameof(this.IsExistsAsync)}";

            using (ProfilingSession.Current.Step(stepName))
            {
                var cacheItem = await this.GetOrAddCacheItemAsync
                                (
                    Cachekeys.Foo.Exists.ToFormat(id),
                    CacheUtility.GetCacheItemExpiration5Min(),
                    async() =>
                {
                    var result = await this.FooRepository.IsExistsAsync(id);
                    return(result);
                }
                                );

                return(cacheItem);
            }
        }