Текущая реализация IEntityCache поддерживает тип первичного ключа из 1 столбца (по умолчанию int
, может быть отправлен как другой тип, например, long
, string
).
В настоящее время есть 2 подхода (которые я вижу), чтобы включить кэширование для таблиц / сущностей, первичный ключ которых состоит из 2 (или более) столбцов, таких как 2 строковых столбца:
Измените схему таблицы и просто добавьте столбец с целочисленным идентификатором (автоинкремент), единственная цель которого состоит в том, чтобы позволить IEntityCache
творить чудеса. Логика приложения, запрашивающая объект, останется нетронутой, так как он будет по-прежнему использовать уникальный индекс из 2 столбцов. Однако изменение схемы не может быть вариантом, и другая проблема заключается в том, что верхние прикладные уровни (Domain, AppServices) не знают Id, который им нужно запрашивать, вместо этого они знают о 2 ключах объекта.
Переписать новую реализацию IEntityCache для поддержки нескольких столбцов (например, IEntityCache<string, string>
?). Не уверен, что это возможно, учитывая ограничения кешманагера?
Вот вопрос: может ли внутренняя работа ICacheManager
- сама по себе абстракция над различными поставщиками кэша (например, IMemoryCache, Redis и т. Д.) - препятствовать реализации с несколькими столбцами?