Próbowałem kilka różnych sposobów, aby uzyskać prosty zestaw transakcji do pracy dla prostego klienta/serwera WCF. Mój serwer WCF ma deklarację klasy klasy Entity Framework dla mojego dostępu do bazy danych i kilka metod modyfikacji danych i metodę SaveChanges. Korzystam z Oracle Data Access (ODP.NET).Jak mogę uzyskać Entity Framework i WCF do pracy z transakcjami? Okay ... jaki jest sekret?
Na przykład chcę wywołać modyfikację z klienta, a następnie osobne wywołanie, aby zapisać zmiany w usłudze WCF. To nie działa. Zasadniczo wszystko wykonuje się poprawnie, ale po drugim wywołaniu, aby zapisać zmiany, usługa WCF nie ma już oryginalnego kontekstu, a zatem żadne zmiany nie są zapisywane (i, w konsekwencji, poprzednie wywołanie, które spowodowało, że zmiany zostały automatycznie wycofane) .
Używam zakres transakcji wokół obu operacji w moim kliencie i wykonanie Complete() po zakończeniu. Moje usługi WCF mają OperationContract, które używają [TransactionFlow(TransactionFlowOption.Mandatory)]
i te implementacje metod używają [OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
. Na koniec moja konfiguracja internetowa jest skonfigurowana za pomocą funkcji wsHttpBinding, która ma ustawioną właściwość transactionFlow
na wartość True.
Nie mam szczęścia. Bez względu na to, co próbuję, kiedy próbuję trafić do serwisu w celu kontynuacji, kontekst EF jest już odnawiany.
Nie wszystkie powiązania obsługują transakcje. http://www.wrox.com/WileyCDA/Section/Transactions-in-WCF-and-NET.id-305253.html – faester
Jak radzisz sobie z sesją między połączeniami? Domyślnie WCF jest bezstanowi, więc jeśli nie kierujesz WCF, aby zrobić coś ze stanem, możesz tracić coś. –
Czy jednostki wygenerowane przez edmx lub poco wygenerowały – Praneeth