Entity Framework 4.1: como trabalhar com o contexto de dados de tempo de vida por chamada?

De acordo com issopostar, Estou usando um contexto de dados por chamada, portanto, em cada método do serviço WCF, eu uso umusando bloco para criar um novo contexto de dados.

Mas tenho algumas dúvidas no formulário para trabalhar dessa maneira.

Por exemplo, eu uso um método getAllCLients () do meu repositório para obter todos os clientes da base de dados e, em seguida, o serviço envia para o cliente que chama o método de uma lista com todos os clientes. Então o usuário modifica a informação de alguns deles, três por exemplo. Talvez o cliente de modificação possa adicionar a uma lista que tenha os clientes modificados.

Quando quero atualizar esses três clientes, posso chamar um método updateClients () que recebe uma lista de clientes modificados. Como eu uso um novo contexto de dados para cada método, em updateCients () obtemos um novo dataContext, sem entidades, então acho que tenho que seguir estes passos:

1.- criar um novo contexto de dados que tenha os clientes que eu quero atualizar. Então eu preciso especificar as condições para isso. Esta é uma operação extra (recebo os clientes antes com o método getAllClients ()), portanto, preciso recuperar os clientes novamente.

2.- jogar a coleção de clientes do DBSet (eu uso o EF 4.1) e mudar a informação. Isso me faz jogar a lista que recebo do aplicativo cliente também. Então eu devo ir jogar duas listas. Isso precisa de recursos.

3.- salve as alterações. Isso é necessário de qualquer maneira, por isso não é necessário mais trabalho.

Existe alguma maneira de fazer o passo 2 facilmente? Existe algum método em dataContext para passar os valores do meu cliente modificado para o cliente no contexto de dados? Eu uso entidades POCO, talvez exista uma maneira fácil de fazer isso.

Outra questão é sobre concorrência. Se eu controlar a simultaneidade com simultaneidade pesimista que permite EF (com um campo de timestamp por exemplo), é melhor chamar o updateClient () de um para cada cliente ou melhor passar uma lista com todos os clientes? Quero dizer que se eu usar uma lista como parâmetro, se houver um problema de simultaneidade com um cliente, o segundo por exemplo, o primeiro cliente será atualizado corretamente, mas o segundo não e o terceiro também. Como posso notificar ao usuário que há problemas com alguns clientes?

Para continuar, gostaria de saber a melhor maneira de fazer atualizações quando tiver um datacontext de vida curta.

Obrigado. Daimroc.

questionAnswers(1)

yourAnswerToTheQuestion