0

以下の方法を使用して、「FirmDetails」の一連のキーをキャッシュしようとしています。


  public async Task<List<Firm>> LoadFirmDetailsAsync()
        {
            List<Firm> items;
            using (var dbContext = new CovestecContext(_configuration))
            {
                var repo = dbContext.GetRepository<Firm>();
                //items = repo.Include(x => x.FirmUsers).ThenInclude(y => y.User).Include(x => x.FirmUsers).ThenInclude(x => x.Role).ToList();
                items = repo.Include(x => x.FirmUsers).ThenInclude(y => y.User).Include(x => x.FirmUsers).ThenInclude(x => x.Role).ToList();
            }

            await _cache.SetAsync("FirmDetails", items, new DistributedCacheEntryOptions { AbsoluteExpiration = DateTimeOffset.MaxValue });

            return items;
        }

コンストラクタは次のようになります。

 private static IDistributedCache _cache;
        private static IConfiguration _configuration;
        private static ILogger _logger;

        public DataCache(IDistributedCache cache, IConfiguration configuration, ILogger<DataCache> logger)
        {
            _cache = cache;
            _configuration = configuration;
            _logger = logger;
            
        }

サーバー関連の構成は、以下のように appsettings.developement.json で定義されています。

 "enyimMemcached": {
    "Servers": [
      {
        "Address": "localhost",
        "Port": 11211
      }
    ]
  }

次のように、Startup.cs クラスの ConfigurationService メソッドにサービスを追加しました。

services.AddEnyimMemcached(Configuration)

以下のコードを使用して「FirmDetail」のデータを取得しようとすると、結果として null が返されます。

   public async Task<List<Firm>> GetFirmDetailsCache()
        {
            if (_cache.Get("FirmDetails") == null)
            {
                await LoadFirmDetailsAsync();
            }

            var result = await _cache.GetAsync<List<Firm>>("FirmDetails");
            return result;
        }

ここで私が間違っていることを教えてください。

4

0 に答える 0