Gerando uma chave de cache exclusiva com base nos argumentos do método

Tenho uma estrutura básica de repositório que eventualmente executa uma consulta e mapeia os resultados de volta para um objeto:

Por exemplo

    public SomeEntity Get(id)
    {
        return base.GetItem<SomeEntity>
                   ("select * from SomeEntities where id = @idParam",
                    new { idParam = id}); 
    }

Se isso se parece com o Dapper, é porque, sob o capô, o GetItem está envolvendo o Dappe

Gostaria de adicionar o cache automático ao GetItem, tenho dois argumento

Uma sequência que contém a consult um dicionário anônimo contendo todos os parâmetro

Estou preocupado que fazer um simples hash primário nesses parâmetros possa causar colisões de chaves de cache e, quando você extrai dados de um cache, uma colisão pode ser muito ruim (por exemplo, vazamento de informações confidenciais

ntão, que técnicas eu tenho que gerariam uma chave de cache de tamanho razoável, garantindo a exclusividade com base na entrada de uma consulta e parâmetro

questionAnswers(2)

yourAnswerToTheQuestion