Udostępnij za pośrednictwem


Tworzenie relacji między zestawami danych w aplikacjach .NET Framework

Uwaga

Zestawy danych i powiązane klasy to starsze technologie .NET Framework z początku 2000 roku, które umożliwiają aplikacjom pracę z danymi w pamięci, gdy aplikacje są odłączone od bazy danych. Technologie te są szczególnie przydatne w przypadku aplikacji, które umożliwiają użytkownikom modyfikowanie danych i utrwalanie zmian z powrotem w bazie danych. Mimo że zestawy danych okazały się bardzo udaną technologią, zalecamy, aby nowe aplikacje platformy .NET używały platformy Entity Framework Core. Program Entity Framework zapewnia bardziej naturalny sposób pracy z danymi tabelarycznymi jako modelami obiektów i ma prostszy interfejs programowania.

Zestawy danych zawierające powiązane tabele danych używają DataRelation obiektów do reprezentowania relacji nadrzędny/podrzędny między tabelami i zwracania powiązanych rekordów ze sobą. Dodawanie powiązanych tabel do zestawów danych przy użyciu Kreatora konfiguracji źródła danych lub Projektanta zestawu danych tworzy i konfiguruje DataRelation obiekt.

Obiekt DataRelation wykonuje dwie funkcje:

  • Może udostępnić rekordy związane z rekordem, z którym pracujesz. Udostępnia ona rekordy podrzędne, jeśli jesteś w rekordzie nadrzędnym (GetChildRows) i rekordem nadrzędnym, jeśli pracujesz z rekordem podrzędnym (GetParentRow).

  • Może wymuszać ograniczenia integralności referencyjnej, takie jak usuwanie powiązanych rekordów podrzędnych podczas usuwania rekordu nadrzędnego.

Ważne jest, aby zrozumieć różnicę między prawdziwym sprzężenia i funkcją DataRelation obiektu. W prawdziwym sprzężenia rekordy są pobierane z tabel nadrzędnych i podrzędnych i umieszczane w jednym, płaskim zestawie rekordów. W przypadku korzystania z DataRelation obiektu nie są tworzone żadne nowe zestawy rekordów. Zamiast tego funkcja DataRelation śledzi relację między tabelami i przechowuje rekordy nadrzędne i podrzędne w synchronizacji.

Obiekty i ograniczenia usługi DataRelation

Obiekt DataRelation jest również używany do tworzenia i wymuszania następujących ograniczeń:

  • Unikatowe ograniczenie, które gwarantuje, że kolumna w tabeli nie zawiera duplikatów.

  • Ograniczenie klucza obcego, które może służyć do utrzymania więzów integralności między tabelą nadrzędną i podrzędną w zestawie danych.

Ograniczenia określone w DataRelation obiekcie są implementowane przez automatyczne tworzenie odpowiednich obiektów lub ustawień właściwości. Jeśli utworzysz ograniczenie klucza obcego DataRelation przy użyciu obiektu, wystąpienia ForeignKeyConstraint klasy zostaną dodane do DataRelation właściwości obiektu ChildKeyConstraint .

Unikatowe ograniczenie jest implementowane przez proste ustawienie Unique właściwości kolumny danych na true wartość lub przez dodanie wystąpienia UniqueConstraint klasy do DataRelation właściwości obiektu ParentKeyConstraint . Aby uzyskać informacje na temat zawieszania ograniczeń w zestawie danych, zobacz Wyłączanie ograniczeń podczas wypełniania zestawu danych.

Reguły więzów integralności

W ramach ograniczenia klucza obcego można określić reguły integralności referencyjnej, które są stosowane w trzech punktach:

  • Po zaktualizowaniu rekordu nadrzędnego

  • Po usunięciu rekordu nadrzędnego

  • Gdy zmiana zostanie zaakceptowana lub odrzucona

Reguły, które można wprowadzić, są określone w wyliczenie Rule i są wymienione w poniższej tabeli.

Reguła ograniczenia klucza obcego Akcja
Cascade Zmiana (aktualizacja lub usuwanie) w rekordzie nadrzędnym jest również wprowadzana w powiązanych rekordach w tabeli podrzędnej.
SetNull Rekordy podrzędne nie są usuwane, ale klucz obcy w rekordach podrzędnych jest ustawiony na DBNullwartość . Dzięki temu ustawieniu rekordy podrzędne mogą być pozostawione jako "oddzielone", czyli nie mają relacji z rekordami nadrzędnymi. Uwaga: użycie tej reguły może spowodować nieprawidłowe dane w tabeli podrzędnej.
SetDefault Klucz obcy w powiązanych rekordach podrzędnych jest ustawiany na wartość domyślną (ustanowioną przez właściwość kolumny DefaultValue ).
None Nie wprowadzono żadnych zmian w powiązanych rekordach podrzędnych. Dzięki temu ustawieniu rekordy podrzędne mogą zawierać odwołania do nieprawidłowych rekordów nadrzędnych.

Aby uzyskać więcej informacji na temat aktualizacji w tabelach zestawów danych, zobacz Zapisywanie danych z powrotem do bazy danych.

Relacje tylko z ograniczeniem

Podczas tworzenia DataRelation obiektu można określić, że relacja będzie używana tylko do wymuszania ograniczeń — czyli nie będzie również używana do uzyskiwania dostępu do powiązanych rekordów. Możesz użyć tej opcji, aby wygenerować zestaw danych, który jest nieco bardziej wydajny i zawiera mniej metod niż jedna z powiązanymi rekordami możliwości. Jednak nie będzie można uzyskać dostępu do powiązanych rekordów. Na przykład relacja z ograniczeniem uniemożliwia usunięcie rekordu nadrzędnego, który nadal zawiera rekordy podrzędne, i nie można uzyskać dostępu do rekordów podrzędnych za pośrednictwem elementu nadrzędnego.

Ręczne tworzenie relacji danych w projektancie zestawów danych

Podczas tworzenia tabel danych przy użyciu narzędzi do projektowania danych w programie Visual Studio relacje są tworzone automatycznie, jeśli informacje mogą być zbierane ze źródła danych. Jeśli ręcznie dodasz tabele danych z karty Zestaw danych przybornika, może być konieczne ręczne utworzenie relacji. Aby uzyskać informacje na temat programowego tworzenia DataRelation obiektów, zobacz Dodawanie elementów DataRelations.

Relacje między tabelami danych są wyświetlane jako wiersze w Projektancie zestawów danych z kluczem i nieskończonością, przedstawiającą aspekt relacji jeden do wielu. Domyślnie nazwa relacji nie jest wyświetlana na powierzchni projektowej.

Uwaga

Na komputerze mogą być wyświetlane różne nazwy lub lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio w tym artykule. Być może używasz innej wersji programu Visual Studio lub innych ustawień środowiska. Aby uzyskać więcej informacji, zobacz Personalizowanie środowiska IDE.

Aby utworzyć relację między dwiema tabelami danych

  1. Otwórz zestaw danych w Projektancie zestawów danych. Aby uzyskać więcej informacji, zobacz Przewodnik: tworzenie zestawu danych w Projektancie zestawów danych.

  2. Przeciągnij obiekt Relation z przybornika DataSet do tabeli danych podrzędnych w relacji.

    Zostanie otwarte okno dialogowe Relacja zawierające pole Podrzędna tabela z tabelą, na której został przeciągnięty obiekt Relation .

  3. Wybierz tabelę nadrzędną w polu Tabela nadrzędna. Tabela nadrzędna zawiera rekordy po stronie "jeden" relacji jeden do wielu.

  4. Sprawdź, czy poprawna tabela podrzędna jest wyświetlana w polu Tabela podrzędna. Tabela podrzędna zawiera rekordy po stronie "wiele" relacji jeden do wielu.

  5. Wpisz nazwę relacji w polu Nazwa lub pozostaw nazwę domyślną na podstawie wybranych tabel. Jest to nazwa rzeczywistego DataRelation obiektu w kodzie.

  6. Wybierz kolumny, które łączą tabele z listami Kolumny kluczy i Kolumny kluczy obcych.

  7. Wybierz, czy chcesz utworzyć relację, ograniczenie, czy oba te elementy.

  8. Zaznacz lub wyczyść pole Zagnieżdżona relacja . Wybranie tej opcji powoduje ustawienie Nested właściwości na true, co powoduje zagnieżdżanie wierszy podrzędnych relacji w kolumnie nadrzędnej, gdy te wiersze są zapisywane jako dane XML lub synchronizowane z elementem XmlDataDocument. Aby uzyskać więcej informacji, zobacz Zagnieżdżanie danychRelations.

  9. Ustaw reguły, które mają być wymuszane podczas wprowadzania zmian w rekordach w tych tabelach. Aby uzyskać więcej informacji, zobacz Rule.

  10. Kliknij przycisk OK , aby utworzyć relację. Wiersz relacji jest wyświetlany w projektancie między dwiema tabelami.

Aby wyświetlić nazwę relacji w projektancie zestawów danych

  1. Otwórz zestaw danych w Projektancie zestawów danych. Aby uzyskać więcej informacji, zobacz Przewodnik: tworzenie zestawu danych w Projektancie zestawów danych.

  2. W menu Dane wybierz polecenie Pokaż etykiety relacji, aby wyświetlić nazwę relacji. Wyczyść to polecenie, aby ukryć nazwę relacji.