## 28.3 Typisierte DataSets manuell im Designer erzeugen Ganz am Anfang haben Sie gesehen, dass es ganz einfach ist, unter Zuhilfenahme des Designers ein typisiertes DataSet zu erzeugen. Manchmal kommen Sie aber auch in die Situation, am typisierten DataSet Änderungen vornehmen zu müssen. Vielleicht wollen Sie sogar das komplette typisierte DataSet manuell anlegen. ### 28.3.1 DataTable manuell erzeugen Um eine DataTable bereitzustellen, aktivieren Sie die Toolbox und ziehen das Element DataTable mittels Drag & Drop in den Designer des typisierten DataSet. Alternativ bietet sich dazu auch das Kontextmenü des Designers an. Wählen Sie hier den Befehl Hinzufügen, hinter dem sich auch das Angebot einer DataTable verbirgt. Die dritte Alternative ist im Menü Ansicht • Hinzufügen zu finden. Per Vorgabe heißt die neue Tabelle DataTable1. Sie können sie aber umbenennen. Markieren Sie dazu das Element in der Designeransicht. Im Eigenschaftsfenster können Sie danach den Namen festlegen. ### 28.3.2 Der DataTable Spalten hinzufügen Die neue Tabelle hat noch keine Spalten. Diese werden im nächsten Schritt festgelegt. Markieren Sie dazu die DataTable im Designer, und öffnen Sie deren Kontextmenü. Wählen Sie hier Hinzufügen. Im sich öffnenden Untermenü wird Ihnen daraufhin Spalte angeboten. Auch zu dieser Vorgehensweise gibt es über das Menü Daten eine alternative Möglichkeit. Spalten zeichnen sich durch viele Eigenschaften aus. Ist eine Spalte im Designer markiert, können Sie im Eigenschaftsfenster deren Eigenschaften spezifisch einstellen (siehe Abbildung 28.4). Was Sie im Eigenschaftsfenster nicht finden, ist die Angabe, ob die Spalte eine Primärschlüsselspalte ist. Wie Sie sich erinnern, ist das auch eine Eigenschaft der DataTable, da mehrere Spalten auch den kombinierten Primärschlüssel einer Tabelle bilden können. Um eine oder auch mehrere Spalten zu Primärschlüsselspalten zu erklären, markieren Sie die in Frage kommenden Spalten im Designer, öffnen danach das Kontextmenü und wählen den Unterpunkt Primärschlüssel festlegen. Auch über das Menü Daten können Sie den Primärschlüssel festlegen. Hier klicken, um das Bild zu vergrößern Abbildung 28.4 Die Eigenschaften einer DataColumn im Eigenschaftsfenster ### 28.3.3 Beziehungen zwischen den Tabellen erstellen Haben Sie dem typisierten DataSet mehrere Tabellen hinzugefügt, möchten Sie vielleicht auch die Beziehung zwischen den Tabellen definieren. Klicken Sie mit der Maustaste auf ein beliebiges Element im Designer, öffnen Sie wieder das Kontextmenü, und wählen Sie Hinzufügen und Beziehung. Daraufhin öffnet sich ein Dialogfenster (siehe Abbildung 28.5), in dem Sie alle Einstellungen der neuen DataRelation vornehmen können. Im oberen Teil des Fensters legen Sie den Namen der DataRelation fest. In den darunter angeordneten Dropdown-Listen wählen Sie die übergeordnete Tabelle (Mastertabelle) und die untergeordnete Tabelle (Detailtabelle) aus. Die Schlüsselspalten der über- und untergeordneten Tabelle werden im Listenfeld meist korrekt angepasst, können aber auch auf andere Spalten eingestellt werden. In der unteren Hälfte des Dialogs definieren Sie die Eigenschaften der Beziehung. Der Dialog ist per Vorgabe so eingestellt, dass zwar die Beziehung erzeugt wird, nicht jedoch ein ForeignKeyConstraint-Objekt. Vielleicht erinnern Sie sich an die Aussagen in Kapitel 26, »ADO.NET – Daten im lokalen Speicher«: Ein ForeignKeyConstraint-Objekt hat die Aufgabe, zu steuern, wie Änderungen zwischen der Master- und der Detailtabelle im DataSet weitergegeben werden. Dient das typisierte DataSet nur dazu, Dateninformationen anzuzeigen, können Sie die Vorgabe des Dialogs beibehalten. Wenn Sie jedoch davon ausgehen, dass Daten im DataSet modifiziert werden, sollten Sie die Option wählen, die sowohl eine Beziehungs- als auch eine Fremdschlüsseleinschränkung erzeugt. Sie können dann auch festlegen, wie Änderungen weitergegeben werden. Mit Regel aktualisieren legen Sie die Eigenschaft UpdateRule des ForeignKeyConstraints fest, mit Regel löschen die Eigenschaft DeleteRule und schließlich mit Regel akzeptieren/ablehnen die Eigenschaft AcceptRejectRule. Hier klicken, um das Bild zu vergrößern Abbildung 28.5 Dialogfenster zum Festlegen der Eigenschaften einer »DataRelation« ### 28.3.4 Weitergehende Betrachtungen