Entity Framework 4.1: ¿cómo trabajar con el contexto de los datos de la vida útil de cada llamada?

De acuerdo a estoenviarEstoy usando un contexto de datos por llamada, por lo que en cada método de mi servicio WCF, uso unusando bloque para crear un nuevo contexto de datos.

Pero tengo algunas dudas en la forma de trabajar de esta manera.

Por ejemplo, uso un método getAllCLients () de mi repositorio para obtener todos los clientes de la base de datos, luego el servicio se envía al cliente que llama al método una lista con todos los clientes. Luego el usuario modifica la información de algunos de ellos, tres por ejemplo. El cliente de modificación tal vez pueda agregar a una lista que tenga los clientes modificados.

Cuando quiero actualizar estos tres clientes, puedo llamar a un método updateClients () que recibe una lista de clientes modificados. Cómo uso un nuevo contexto de datos para cada método, en updateCients () obtengo un nuevo dataContext, sin entidades, por lo que creo que debo seguir estos pasos:

1.- crear un nuevo contexto de datos que tenga los clientes que quiero actualizar. Entonces necesito especificar las condiciones para eso. Esta es una operación adicional (obtengo los clientes antes con el método getAllClients ()), por lo que necesito volver a obtener los clientes.

2.- Ir a la colección de clientes del DBSet (uso EF 4.1) y cambiar la información. Esto me hace ir a tirar la lista que recibo de la aplicación cliente también. Así que tengo que ir a tirar dos listas. Esto necesita recursos.

3.- Guardar los cambios. Esto es necesario de todos modos, por lo que no requiere más trabajo.

¿Hay alguna manera de hacer el paso 2 fácilmente? ¿Existe algún método en dataContext para pasar los valores de mi cliente modificado al cliente en el contexto de datos? Yo uso entidades POCO, tal vez exista una manera fácil de hacerlo.

Otra pregunta es sobre la concurrencia. Si controlo la concurrencia con la concurrencia pesimista que permite EF (con un campo de marca de tiempo, por ejemplo), ¿es mejor llamar al updateClient () para cada cliente o mejor para pasar una lista con todos los clientes? Quiero decir que si uso una lista como parámetro, si hay un problema de concurrencia con un cliente, el segundo, por ejemplo, el primer cliente se actualizará correctamente, pero el segundo no y el tercero tampoco. ¿Cómo puedo notificar al usuario que hay problemas con algunos clientes?

Para reanudar, me gustaría saber la mejor manera de hacer actualizaciones cuando tengo un breve contexto de datos de vida.

Gracias. Daimroc.