Execução de inserção OU atualização (upsert) no sql server compact edition

Tenho um projeto c # que está usando o sqlserver compact edition e a estrutura de entidade para acesso a dados. Eu tenho a necessidade de inserir ou atualizar uma grande quantidade de linhas, 5000+ ou mais para o banco de dados, portanto, se a chave existir, atualize o registro, caso contrário não o insira. Não consigo encontrar uma maneira de fazer isso com a edição compacta e a EF com desempenho horrível, ou seja, levando 2 minutos ou mais em um computador Core i7. Eu tentei procurar o registro para ver se ele existe e, em seguida, inserir se não houver ou atualizar se existir, a pesquisa é a principal causa. Eu tentei compilar a consulta de pesquisa e isso só deu uma pequena melhoria. Outra coisa que tentei é inserir o registro em uma captura de tentativa e, se ele falhar na atualização, mas isso me obriga a fazer alterações em todos os registros para obter a exceção, em vez de no final, o que é um fator que prejudica o desempenho. Obviamente, não posso usar procedimentos armazenados, pois é uma edição compacta. Também observei apenas a execução do t-sql diretamente de alguma forma no db, mas a falta de instruções de processo no compact parece excluir isso. Eu procurei no mundo várias idéias. Eu realmente queria usar o compact, se puder expressar demais os benefícios da implantação e a capacidade de impedir que o usuário procure o banco de dados. Qualquer sugestão seria apreciada.

Obrigad

questionAnswers(7)

yourAnswerToTheQuestion