Kategorie szkoleń | Egzaminy | Kontakt
  • 2
  • 0
  • 112

Witam,

mam aplikację napisaną w WPF oraz LINQ to SQL. Jest problem. Jak odświeżyć dane wyświetlane w gridzie , jeśli aplikacja jest otwarta, a dane w tabelach zostały zmienione przez zewnętrzny program, np. ETL? Obecnie zamykam program i ponowne go otwieram.

Pozdrawiam,

Bogdan

Bogdan_Chlebowski_DCHK
  • Zapytał
  • @ Bogdan_Chlebowski_DCHK | 08.06.2015
    • 3
    • 4
    • 12
Zaloguj się aby zadać pytanie
Pokrewne

Odpowiedzi (2)

  • 0

Dla tego problemu  istnieją dwa klasyczne rozwiązania:

  1. Odpytywanie (polling) bazy danych w celu uzyskania informacji o zmianach
  2. Powiadamianie aplikacji przez silnik bazy danych w sytuacji gdy nastąpiły zmiany


W przypadku pierwszego rozwiązania można np. utworzyć w bazie danych tabelę zawierającą nazwę śledzonego obiektu wraz z licznikiem, którego zwiększenie oznacza zmianę - w ten sposób zbudowany jest np. mechanizm zależności buforowania (SQL cache dependency) dla SQL Server 7.0/2000. Drugie rozwiązanie wymaga mechanizmu powiadamiania od strony silnika bazy danych, którego rolę w przypadku SQL Server 2005 lub nowszych pełni Service Broker. Od strony .NET Framework rozwiązanie oparte jest o klasę SqlDependency i SqlCacheDependency.

Opis działania modeli śledzenia zmian można znaleźć w dokumentacji: https://msdn.microsoft.com/en-us/library/ms178604.aspx

Przykład wykorzystania w aplikacji typu Windows Client (WPF) : http://www.codeproject.com/Articles/144344/Query-Notification-using-SqlDependency-and-SqlCach#heading0006

 

  • Odpowiedział
  • @ | 08.06.2015
  • TRENER ALTKOM AKADEMII
  • 1
  • Odpowiedział
  • @ | 08.06.2015
  • TRENER ALTKOM AKADEMII
Komentarze
Dziękuje za odpowiedź. Muszę spróbować i zobaczyć jak działa
A czy mogę po prostu dodać przycisk Refresh i utowrzyć dataContext jeszcze raz i załadować dane do Grida? Czy takie rozwiązanie jest akceptowalne ?
Skomentował : @ Bogdan_Chlebowski_DCHK ,11.06.2015
  • 3
  • 4
  • 12
Tak, jest nie tylko akceptowalne ale również wskazane jeżeli nie musimy śledzić zmian w bazie danych a skalowalność nie stanowi problemu.
Skomentował : @ TRENER ALTKOM AKADEMII ,17.06.2015