No projeto em que estou trabalhando agora, estamos usando o ASP.NET MVC e o Entity Framework 4.1. Também tivemos um banco de dados primeiro, mas seguimos com a idéia de usar os objetos POCO gerados a partir dos modelos T4 baseados em DBSet.
Em nosso projeto, temos um assembly chamado business, que possui um namespace de dados. Dentro deste namespace é onde o DBContext e o POCO gerado estão vivos. Nós não tocamos nisso uma vez que o acesso a dados tenha sido criado. Agora, além disso, temos um conjunto de repositórios que estamos usando; 1: execute as necessidades básicas de CRUD e 2: crie e entregue objetos de transferência de dados personalizados até o front end.
No front end, é onde estamos usando as anotações de dados nos DTOs personalizados ou em ViewModels personalizados para necessidades específicas. Nossa suposição é que devemos validar os dados provenientes do front end o mais rápido possível e depois repassar os modelos limpos para os repositórios. Nós não estamos realmente muito preocupados com o rastreamento de mudança de entidade ou algo assim para a estrutura de entidade, desde que economizemos e puxe com sucesso.
Até agora, isso funcionou para nós. Espero que isso ajude você e boa sorte em seu projeto.