Primeiro, se você estiver iniciando um novo projeto, vá com o Entity Framework ("EF") - agora ele gera SQL muito melhor (mais como o Linq to SQL) e é mais fácil de manter e mais poderoso que o Linq to SQL (" L2S "). Desde o lançamento do .NET 4.0, considero o Linq to SQL uma tecnologia obsoleta. A MS tem sido muito aberta quanto a não continuar o desenvolvimento do L2S.
1) Desempenho
Isso é difícil de responder. Para a maioria das operações de entidade única ( CRUD ), você encontrará desempenho equivalente nas três tecnologias. Você precisa saber como o EF e o Linq to SQL funcionam para usá-los ao máximo. Para operações de alto volume, como consultas de sondagem, convém que o EF / L2S "compile" sua consulta de entidade para que a estrutura não precise regenerar constantemente o SQL, ou você pode enfrentar problemas de escalabilidade. (veja edições)
Para atualizações em massa nas quais você está atualizando grandes quantidades de dados, o SQL bruto ou um procedimento armazenado sempre terá um desempenho melhor do que uma solução ORM, porque você não precisa reunir os dados por cabo para o ORM para realizar atualizações.
2) Velocidade de desenvolvimento
Na maioria dos cenários, o EF afasta os processos armazenados / SQL nus quando se trata da velocidade do desenvolvimento. O designer da EF pode atualizar seu modelo do banco de dados à medida que ele muda (mediante solicitação), para que você não tenha problemas de sincronização entre o código do objeto e o código do banco de dados. A única vez em que eu não consideraria o uso de um ORM é quando você está executando um aplicativo do tipo relatório / painel em que não está fazendo nenhuma atualização ou quando está criando um aplicativo apenas para realizar operações de manutenção de dados brutos em um banco de dados.
3) Código puro / de manutenção
De mãos dadas, a EF supera SQL / sprocs. Como seus relacionamentos são modelados, as junções no seu código são relativamente raras. Os relacionamentos das entidades são quase evidentes para o leitor na maioria das consultas. Nada é pior do que ter que passar de depuração de camada para camada ou através de múltiplos SQL / camadas intermediárias para entender o que realmente está acontecendo com seus dados. A EF traz seu modelo de dados para o seu código de uma maneira muito poderosa.
4) Flexibilidade
Os procs armazenados e o SQL bruto são mais "flexíveis". Você pode aproveitar sprocs e SQL para gerar consultas mais rápidas para casos específicos ímpares, além de aproveitar a funcionalidade do banco de dados nativo mais facilmente do que com o ORM.
5) geral
Não fique preso à falsa dicotomia de escolher um ORM vs usar procedimentos armazenados. Você pode usar os dois no mesmo aplicativo e provavelmente deveria. As grandes operações em massa devem ser realizadas em procedimentos armazenados ou SQL (que podem realmente ser chamados pelo EF), e o EF deve ser usado para suas operações CRUD e para a maioria das necessidades da camada intermediária. Talvez você opte por usar o SQL para escrever seus relatórios. Eu acho que a moral da história é a mesma de sempre. Use a ferramenta certa para o trabalho. Mas o mais fino é que a EF é muito boa hoje em dia (a partir do .NET 4.0). Passe algum tempo lendo e entendendo isso em profundidade e poderá criar aplicativos incríveis de alto desempenho com facilidade.
EDIT : O EF 5 simplifica um pouco essa parte com as consultas LINQ compiladas automaticamente , mas para itens de alto volume, você definitivamente precisará testar e analisar o que melhor se adapta a você no mundo real.