Oto moje propozycje:
-
Jeśli jesteś w stanie dodać zduplikowaną tabelę do bazy danych, oto rozwiązanie. Masz swój stół1 i tabela2 (Kopia tabeli1 ). Podczas wstawiania nowych rekordów do tabeli1 , możesz je porównać z istniejącymi rekordami w Twojej tabeli2 a tym samym znaleźć nowe rekordy. Po porównaniu powinieneś dodać wszystkie nowe rekordy do tabeli2 . To jest jakiś rodzaj synchronizacji. Można to zrobić za pomocą zapisanego proc lub programowo.
-
Nie potrzebujesz kolejnych stołów. Możesz przechowywać wszystkie swoje dane w pamięci podręcznej aplikacji i sprawdzać po pewnym okresie czasu (na przykład 5 sekund), czy są jakieś nowe zdarzenia, które nie istnieją w Twojej pamięci podręcznej. Jeśli nie istnieją - powiadom je w swoim logu lub w innym miejscu i dodaj je do pamięci podręcznej. Ale jeśli jest zbyt wiele rekordów, czas przetwarzania znacznie się wydłuży + zużycie pamięci.
-
Jeśli jesteś w stanie zmienić bazę danych, możesz dodać coś w rodzaju kolumny „isNowa” do swojej tabeli. Gdy nowe dane pochodzą ze strony internetowej, kolumna będzie miała wartość 'true', Twój program może to śledzić i po przetworzeniu ustawić tę flagę na false dla każdego rekordu. (Jeśli witryna nie może ustawić tej flagi, możesz użyć SQL TRIGGER AFTER INSERT aby ustawić wartość flagi na true. Witryna nie może nawet wiedzieć o tej funkcji, jeśli jest witryną innej firmy lub nie chcesz niczego tam zmieniać)
-
Oto artykuł o śledzeniu zmian EF:http://blogs.msdn.com/b/adonet/archive/2009/06/10/poco-in-the-entity-framework-part-3-change-tracking-with- poco.aspx
Ale problem polega na tym, że powinieneś sprawdzić całą tabelę pod kątem zmian za pośrednictwem EF, które wpłyną na wydajność Twojej aplikacji.
Oto przydatne informacje na temat koncepcji śledzenia zmian i implementacji po stronie SQL Server:http://www.mssqltips.com/sqlservtip/1819/using-change-tracking-in-sql-server-2008/http://msdn.microsoft. com/en-us/library/bb933994.aspx