IEntityCache 的当前实现支持1列主键类型(默认int
,可以作为其他类型发送,例如long
,string
)。
目前有两种方法(我可以看到)为主键由2个(或更多)列(例如2个字符串列)组成的表/实体启用缓存:
修改表的架构,仅添加一个整数Id列(自动递增),其唯一目的是使IEntityCache
发挥作用。查询实体的应用程序逻辑将保持不变,因为它仍将使用2列唯一索引。但是,修改模式可能不是一个选择,另一个问题是上层应用程序层(Domain,AppServices)不知道他们需要查询的ID,而是知道实体的2个键。
重写IEntityCache的新实现以支持多列(例如IEntityCache<string, string>
?)。不确定cachemanager的限制是否可行?
这里是一个问题:ICacheManager
的内部工作本身就是对不同缓存提供程序(例如IMemoryCache,Redis等)的抽象吗?会阻止多列实现吗?