Hierarchiczna aktualizacja — Przegląd

Aktualizacja hierarchiczne odnosi się do zapisywania zaktualizowane dane z zestawu danych, który ma dwa lub więcej tabel powiązanych z powrotem do bazy danych przy jednoczesnym zachowaniu więzów integralności.Więzy integralności odnosi się do spójności przepisów przez ograniczenia klucza obcego w bazie danych, które kontrolują zachowanie Wstawianie, aktualizowanie i usuwanie rekordów pokrewnych.Na przykład jest więzów integralności, które wymuszają Utwórz rekord odbiorcy przed utworzeniem zamówień tego klienta.

Podczas tworzenia danych aplikacji w programie Visual Studio 2005 i starszych wersjach deweloperzy automatycznie wygenerowany kod zapisany zmienionych danych tylko do pierwszego spisu przeciągnięte z Źródła danych okna.Podczas przeciągania dodatkowe tabele z Źródła danych okna, użytkownicy musiał ręcznie dodać kod, aby zapisać zmiany w tych tabelach do bazy danych.Nie tylko były użytkowników trzeba dodać kod do wywołania TableAdapter.Update metoda dla każdej tabeli, ale logiki miał należy włączyć do wykonywania określonych operacji wstawiania, aktualizacji i usuwania w odpowiedniej kolejności dla każdej tabeli uniemożliwić naruszenie więzów integralności. (Na przykład nowych klientów musi być zapisany przed dodać swoje zamówienia, a zamówień muszą zostać usunięte przed usunięciem istniejącego klienta.)

Począwszy od programu Visual Studio 2008, zestawów danych wpisywanych są wzmocnione poprzez nowy TableAdapterManager składnika.TableAdapterManagerzmniejsza kod, który jest wymagany do zapisywania danych w wielu tabelach powiązanych z kilku procedur z wieloma liniami kodu do wywołania jednej metody: TableAdapterManager.UpdateAll(TypedDataset).TableAdapterManager Zawiera wszystkie podstawowe logiki, która jest wymagane, aby zachować więzy integralności podczas operacji update (save) między zestawu danych i bazy danych.Aby uzyskać więcej informacji, zobacz TableAdapterManager — Przegląd.

Włączanie aktualizacji hierarchicznej w zestawie danych

Domyślnie hierarchiczny aktualizacji jest włączona dla wszystkich nowych baz danych, które są dodawane lub utworzone w projekcie.Włączanie i wyłączanie aktualizacji hierarchicznych przez ustawienie Hierarchiczną aktualizacji właściwości zestawu danych wpisywanych w Tworzenie i edytowanie wpisanych zestawów danych do True lub False.Aby uzyskać szczegółowe informacje, zobacz Porady: włączanie i wyłączanie hierarchicznej aktualizacji.

Ograniczenia FOREIGN Key i aktualizacje i usuwanie kaskadowe

Ważne jest, aby zrozumieć, jak-ograniczeń foreign key i kaskadowych zachowanie w bazie danych są tworzone w kodzie wygenerowanego zestawu danych.

Domyślnie tabele danych w zestawie danych są generowane z relacji (DataRelation) pasujące relacje w bazie danych.Jednak relacji w zestawie danych nie zostanie wygenerowana jako ograniczenie klucza obcego.DataRelation Jest skonfigurowany jako Tylko relacji bez UpdateRule lub DeleteRule w efekcie.

Domyślnie aktualizacji kaskadowej i usuwania kaskadowego są wyłączone nawet jeżeli relacja bazy danych jest ustawiony z aktualizacje kaskadowe lub usuwanie kaskadowe włączona.Na przykład tworzenie nowego klienta i nowego zamówienia, a następnie próbuje zapisać dane może powodować konflikt z ograniczeń foreign key, zdefiniowane w bazie danych.Aby uzyskać więcej informacji, zobacz Porady: konfigurowanie ograniczeń obcego klucza w zestawie danych.

Ustawianie kolejności do przeprowadzania aktualizacji

Ustawienie kolejności do wykonywania aktualizacji ustawia kolejność poszczególnych wstawia aktualizacje i usuwa wymaganą do zapisania wszystkich zmodyfikowanych danych we wszystkich tabelach zestawu danych.Hierarchiczny aktualizacji jest włączona, wstawia są wykonywane jako pierwsze, a następnie aktualizacje i usuwa.TableAdapterManager zawiera UpdateOrder właściwość, która może być zestawem do przeprowadzania aktualizacji po raz pierwszy, a następnie wstawiania i usuwania.

[!UWAGA]

Jest ważne, aby zrozumieć, że kolejność aktualizacji jest całkowitą.Oznacza to gdy aktualizacje są wykonywane, wstawia są wykonywane dla wszystkich tabel w zestawie danych, a następnie aktualizacje są wykonywane dla wszystkich tabel w zestawie danych, a następnie usuwa są wykonywane dla wszystkich tabel w zestawie danych.

Aby ustawić UpdateOrder właściwość po przeciąganie elementów z Okno źródła danych w formularzu, kliknij przycisk TableAdapterManager w zasobniku składnik i zestaw UpdateOrder właściwość w Właściwości okna.Aby uzyskać więcej informacji, zobacz Porady: ustawianie kolejności podczas przeprowadzania hierarchicznej aktualizacji.

Tworzenie kopii zapasowej zestawu danych przed przeprowadzeniem aktualizacji hierarchiczne

Podczas zapisywania danych (poprzez wywołanie TableAdapterManager.UpdateAll() metoda), TableAdapterManager próby aktualizacji danych dla każdej tabeli w ramach pojedynczej transakcji.Jeśli żadnej części aktualizacji dla dowolnej tabeli nie powiedzie się, cała transakcja jest cofana.W większości sytuacji wycofywanie transakcji zwraca aplikacji do stanu pierwotnego.Jednak czasami można przywrócić zestaw danych z kopii zapasowej.Jednym z przykładów jest podczas korzystania z automatycznego przyrostu wartości.Na przykład, jeśli zapisywania operacja się nie powiedzie, automatycznego przyrostu wartości nie są resetowane do danych i zestaw danych będzie w dalszym ciągu tworzyć autoinkrementacja wartości, pozostawiając luki w numeracji, które mogą nie być akceptowane w aplikacji.W sytuacjach, w przypadku gdy jest to problem, TableAdapterManager zawiera BackupDataSetBeforeUpdate właściwość, która zastępuje istniejącego zestawu danych z kopii zapasowej, jeśli transakcja nie powiedzie się.

[!UWAGA]

Kopia zapasowa jest tylko w pamięci podczas wykonywania TableAdapterManager.UpdateAll metody.Dlatego istnieje nie programowy dostęp do tego zestawu kopii zapasowych danych, ponieważ to zastępuje oryginalny zestaw danych lub wykracza poza zakres tak szybko, jak TableAdapterManager.UpdateAll metoda zakończył działanie.

Zobacz też

Zadania

Wskazówki: zapisywanie danych z powiązanych tabel danych (Hierarchiczna aktualizacja)

Koncepcje

Zapisywanie danych

TableAdapterManager — Przegląd

Inne zasoby

Hierarchiczna aktualizacja