以下の方法を使用して、「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;
}
ここで私が間違っていることを教えてください。