Код: Выделить всё
public class Entity
{
public int Id { get; set; }
public string Name { get; set; }
}
Код: Выделить всё
public class EntityRepository
{
...
public Entity GetById(int id)
{
return db.GetById(id);
}
public Entity GetByName(string name)
{
return db.GetByName(name);
}
}
Каков наилучший способ кэширования вызовов GetById и вызовов GetByName с помощью Microsoft.Extensions.Caching.Memory.IMemoryCache
Каков наилучший способ кэширования вызовов GetById и вызовов GetByName с помощью Microsoft.Extensions.Caching.Memory.IMemoryCache
Каков наилучший способ кэширования вызовов GetById и вызовов GetByName с помощью Microsoft.Extensions.Caching.Memory.IMemoryCache
code>?
Текущее решение:
Код: Выделить всё
public class EntityRepository
{
...
public Entity GetById(int id)
{
return Cache.GetOrCreate($"id:{id}", cacheEntry =>
{
return db.GetById(id);
});
}
public Entity GetByName(string name)
{
return Cache.GetOrCreate($"name:{name}", cacheEntry =>
{
return db.GetByName(name);
});
}
public void RemoveById(int id)
{
db.RemoveById(id);
Cache.Remove($"id:{id}");
}
}
Есть ли лучшее решение, чем дважды сохранить объект в кеше?
Подробнее здесь: https://stackoverflow.com/questions/591 ... in-c-sharp