2009-06-02 7 views
5

Chcę użyć buforowania danych w mojej aplikacji .net C#. Do tej pory dodałem buforowanie danych i dodałem zależności bufora sql na konkretnych tabelach. Ale to nie wystarczy. Tabele te będą aktualizowane zbyt często, ale nie będą miały znaczenia dla wielu buforowanych obiektów. Spowoduje to, że buforowanie danych będzie prawie bezużyteczne, ponieważ będzie często przepłukiwane. Chcę zaimplementować zależność pamięci podręcznej sql od określonych wierszy dla każdego obiektu. Jak mogę to zrobić?Jak utworzyć zależność od pamięci podręcznej sql specyficzne dla wiersza?

+0

dokumentacja aspnet_regsql wspomina tylko tabele, ale czy próbowałeś go używać przeciwko widzenia? wątpię to będzie działać, ale może warto spróbować. –

Odpowiedz

5

Musisz zrozumieć, jak działa SqlDependency. Ty subscribe a result set and get notified when that result set has changed. Możesz subskrybować dowolny zestaw wyników, co oznacza każde zapytanie, o ile jest zgodne z restrictions of the supported statements. Naprawdę nie ma znaczenia, czy jest to tabela czy widok.

Pod względem technicznym można subskrybować konkretne powiadomienia, przesyłając zapytanie właściwe dla tego wiersza, np. ze sztywno zakodowaną klauzulą ​​WHERE. Będziesz musiał zmienić swój kod, aby pobierać i buforować tylko potrzebne dane w kolejności rząd po rzędzie, w przeciwieństwie do pobierania całych tabel i buforowania ich w pamięci. Heck, i tak musisz to zrobić, jeśli przynajmniej martwisz się wielkością tych stołów. Buforowanie całych tabel powinno być wykonywane tylko dla danych katalogowych i referencyjnych, które zmieniają się nieczęsto lub wcale.

Można również wybrać pobieranie i buforowanie partycji danych, np. poszczególne zakresy kluczy (powiedzmy między literami "A" i "D", "E" i "H" itd. i zasubskrybuj, aby otrzymywać powiadomienia o tej konkretnej partycji danych:

Jeśli chcesz understand how SqlDependency works, mój blog zawiera kilka artykułów na ten temat , w tym common programming pitfalls of SqlDependency i deployment problems with SqlDependency.

+0

BTW gdy mówię „sztywno WHERE” Nie mam na myśli sztywnego kodowania kluczy wyszukiwania.Możesz użyć @parameters OK, chodzi mi o to, że musisz dodać klauzulę WHERE, aby ograniczyć zestaw wyników tylko do interesujących Cię wierszy. –

Powiązane problemy