Depois de pesquisar furiosamente, encontrei a resposta:EF4 - O procedimento armazenado selecionado não retorna colunas
O EF não pode obter metadados de um proc armazenado que usa consultas dinâmicas ou tabelas temporárias. A solução foi criar manualmente o tipo retornado complexo OU colocar
SET FMTONLY OFF
na minha definição de proc armazenado. O perigo com a segunda opção, é claro, é que o proc armazenado será executado quando o Visual Studio executar a chamada de metadados, então isso seria idealmente usado apenas se o procedimento armazenado não mudar nada.
ATUALIZAÇÃO:Uma alternativa é certificar-se de que o procedimento armazenado realmente funciona. Outra coisa que você pode fazer é criar um procedimento armazenado fictício que retorne as colunas desejadas, vincule-o e faça a lógica real.