Entity Framework 4.1: как работать с контекстом данных времени жизни звонка?

Согласно этомусообщениеЯ использую контекст данных для каждого вызова, поэтому в каждом методе моей службы WCF я используюusing block создать новый контекст данных.

Но у меня есть некоторые сомнения в форме, чтобы работать таким образом.

Например, я использую метод getAllCLients () из своего репозитория, чтобы получить всех клиентов базы данных, затем служба отправляет клиенту, который вызывает метод, список со всеми клиентами. Затем пользователь изменяет информацию о некоторых из них, например, три. Изменить клиента, возможно, я могу добавить в список, в котором есть измененные клиенты.

Когда я хочу обновить эти три клиента, я могу вызвать метод updateClients (), который получает список измененных клиентов. Как я использую новый контекст данных для каждого метода, в updateCients () получаю новый dataContext, без сущностей, поэтому я думаю, что я должен выполнить следующие шаги:

1.- создать новый контекст данных, в котором есть клиенты, которых я хочу обновить. Так что мне нужно указать условия для этого. Это дополнительная операция (я получаю клиентов раньше с помощью метода getAllClients ()), поэтому мне нужно снова получить клиентов.

2.- иди кидай коллекцию клиентов из DBSet (я использую EF 4.1) и меняй информацию. Это заставляет меня бросить список, который я получаю из клиентского приложения тоже. Поэтому я должен бросить два списка. Это требует ресурсов.

3.- сохранить изменения. Это необходимо в любом случае, так что больше не требуется больше работы.

Есть ли способ сделать шаг 2 легко? существует какой-то метод в dataContext для передачи значений от моего измененного клиента клиенту в контексте данных? Я использую POCO-сущности, возможно, существует простой способ сделать это.

Другой вопрос о параллелизме. Если я контролирую параллелизм с пессимистическим параллелизмом, который разрешает EF (например, с полем временной метки), лучше ли вызывать метод updateClient () по одному для каждого клиента или лучше передать список со всеми клиентами? Я имею в виду, что если я использую список в качестве параметра, если существует проблема параллелизма с одним клиентом, например, со вторым, первый клиент будет обновлен корректно, а второй - нет, а третий - нет. Как я могу уведомить пользователя, что есть проблемы с некоторыми клиентами?

Чтобы возобновить, я хотел бы знать, как лучше всего делать обновления, когда у меня есть короткий текст данных.

Благодарю. Daimroc.

Ответы на вопрос(1)

Ваш ответ на вопрос