Beispieldaten für ein EDM generieren

Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!

Im Artikel “Beispieldaten generieren mit Bogus” haben wir gezeigt, wie Sie grundsätzlich Beispieldaten mit der Erweiterung Bogus erzeugen. Dort haben wir allerdings noch offen gelassen, wie Sie solche Daten erzeugen, die in verknüpften Tabellen gespeichert werden sollen – also beispielsweise in zwei Tabellen namens “Kunden” und “Bestellungen”, wobei die Tabelle “Bestellungen” über ein Fremdschlüsselfeld namens “KundeID” mit der Tabelle “Kunden” verknüpft ist. Wie das gelingt, und welche Techniken noch interessant sind für das Schreiben von Beispieldaten über ein Entity Data Model direkt in die zugrunde liegenden Tabellen, beschreiben wir im vorliegenden Artikel.

Beispielprojekt erstellen

Wir erstellen ein einfaches Beispielprojekt des Typs WPF-App (für Visual Basic) namens BeispieldatenGenerieren. Diesem fügen wir ein Entity Data Model hinzu, das wir BeispieldatenContext nennen (Menüeintrag Projekt|Neues Element hinzufügen…) und das den Typ Leeres Code First-Modell erhalten soll. Für dieses Projekt legen wir als Erstes eine Klasse namens Kunde an, die wie folgt aussieht:

Partial Public Class Kunde
     Public Overridable Property ID As Int32
     Public Overridable Property Vorname As String
     Public Overridable Property Nachname As String
     Public Overridable Property Firma As String
     Public Overridable Property Strasse As String
     Public Overridable Property PLZ As String
     Public Overridable Property Ort As String
     Public Overridable Property Land As String
     Public Overridable Property EMail As String
End Class

Außerdem fügen wir eine Klasse namens Bestellung hinzu:

Partial Public Class Bestellung
     Public Overridable Property ID As Int32
     Public Overridable Property Bestelldatum As DateTime
     Public Overridable Property Kunde As Kunde
End Class

Damit wir auch eine m:n-Beziehung abbilden können, legen wir noch eine Klasse Produkt und eine Klasse Bestellpositionen an:

Partial Public Class Bestellposition
     Public Overridable Property ID As Int32
     Public Overridable Property ProduktID As Int32
     Public Overridable Property BestellungID As Int32
     Public Overridable Property Produkt As Produkt
     Public Overridable Property Bestellung As Bestellung
     Public Overridable Property Einzelpreis As Decimal
     Public Overridable Property Menge As Int32
End Class
Partial Public Class Produkt
     Public Overridable Property ID As Int32
     Public Overridable Property Produktname As String
     Public Overridable Property Einzelpreis As Decimal
     Public Overridable Property Bestellpositionen As ICollection(Of Bestellposition)
End Class

Der Klasse BeispieldatenContext.vb fügen wir eine DbSet-Definition für die vorgestellten Klasse hinzu. Außerdem legen wir in der Konstruktor-Methode New fest, dass die noch zu definierende Klasse BeispieldatenInitializer zum Initialisieren der Datenbank verwendet werden soll:

Public Class BeispieldatenContext
     Inherits DbContext
     Public Sub New()
         MyBase.New("name=BeispieldatenContext")
         Database.SetInitializer(New BeispieldatenInitializer())
     End Sub
     Public Overridable Property Kunden() As DbSet(Of Kunde)
     Public Overridable Property Bestellungen() As DbSet(Of Bestellung)
     Public Overridable Property Produkte() As DbSet(Of Produkt)
     Public Overridable Property Bestellpositionen() As DbSet(Of Bestellposition)
End Class

Schließlich legen wir hier noch fest, dass die Elemente der Klassen Kunde, Bestellung, Bestellposition und Produkt in den Tabellen Kunden, Bestellungen, Bestellpositionen und Produkte landen sollen:

Protected Overrides Sub OnModelCreating(modelBuilder As DbModelBuilder)
     MyBase.OnModelCreating(modelBuilder)
     modelBuilder.Entity(Of Kunde)().ToTable("Kunden")
     modelBuilder.Entity(Of Bestellung)().ToTable("Bestellungen")
     modelBuilder.Entity(Of Bestellposition)().ToTable("Bestellpositionen")
     modelBuilder.Entity(Of Produkt)().ToTable("Produkte")
End Sub

Bogus zum Projekt hinzufügen

Danach fügen wir das Bogus-Paket zum Projekt hinzu. Dazu wählen Sie den Menüeintrag Projekt|NuGet-Pakete verwalten aus. Dies öffnet ein neues Fenster, indem Sie zum Bereich Durchsuchen wechseln. Hier geben Sie im Suchfeld den Text Bogus ein und finden gleich das passende Paket von Brian Chavez vor.

Markieren Sie dieses und starten die Installation mit einem Klick auf die Schaltfläche Installieren (siehe Bild 1).

Hinzufügen des Pakets Bogus

Bild 1: Hinzufügen des Pakets Bogus

Kundentabelle mit Bogus füllen

 

Schreibe einen Kommentar