Entity Framework 4.1: jak pracować z kontekstem danych czasu życia na połączenie?

Według tegosłupek, Używam kontekstu danych na wywołanie, więc w każdej metodzie mojej usługi WCF używamza pomocą bloku stworzyć nowy kontekst danych.

Ale mam pewne wątpliwości co do formy, aby działać w ten sposób.

Na przykład używam metody getAllCLients () z mojego repozytorium, aby pobrać wszystkich klientów bazy danych, a następnie usługa wysyła do klienta, który wywołuje metodę z listą wszystkich klientów. Następnie użytkownik modyfikuje informacje niektórych z nich, na przykład trzy. Klient modyfikujący może dodać do listy, która ma zmodyfikowanych klientów.

Gdy chcę zaktualizować tych trzech klientów, mogę wywołać metodę updateClients (), która otrzyma listę zmodyfikowanych klientów. Jak używam nowego kontekstu danych dla każdej metody, w updateCients () otrzymuję nowy dataContext, bez elementów, więc myślę, że muszę wykonać następujące kroki:

1.- utwórz nowy kontekst danych, który ma klientów, których chcę zaktualizować. Muszę określić warunki tego. Jest to dodatkowa operacja (wcześniej otrzymałem klientów za pomocą metody getAllClients ()), więc muszę ponownie uzyskać klientów.

2.- idź rzucić kolekcję klientów DBSet (używam EF 4.1) i zmienić informacje. To sprawia, że ​​idę rzucać listę, którą otrzymuję również z aplikacji klienckiej. Muszę więc rzucić dwie listy. To wymaga zasobów.

3.- zapisz zmiany. Jest to i tak potrzebne, więc nie wymaga więcej pracy.

Jest jakikolwiek sposób, aby łatwo wykonać krok 2? istnieje pewna metoda w dataContext, aby przekazać wartości z mojego zmodyfikowanego klienta do klienta w kontekście danych? Używam jednostek POCO, być może istnieje prosty sposób na to.

Inne pytanie dotyczy współbieżności. Jeśli kontroluję współbieżność z pesymistyczną współbieżnością, która pozwala na EF (na przykład z polem znacznika czasu), czy lepiej jest wywołać updateClient () jeden dla każdego klienta lub lepiej, aby przekazać listę wszystkim klientom? Mam na myśli to, że jeśli używam listy jako parametru, jeśli występuje problem współbieżności z jednym klientem, drugi na przykład pierwszy klient będzie aktualizowany poprawnie, ale drugi nie i trzeci nie. Jak mogę powiadomić użytkownika o problemach z niektórymi klientami?

Aby wznowić, chciałbym poznać najlepszy sposób na aktualizację, gdy mam krótki datacontext życia.

Dzięki. Daimroc.

questionAnswers(1)

yourAnswerToTheQuestion