Hi Forum!
Nicht selten steht man vor der Aufgabe einige Beispieldaten in die Datenbank zu laden (seed). Bei einer "null oder 1 zu viele" oder "1 zu viele", ist das kein Problem. Doch wie sieht es bei einer "viele zu viele" Beziehung aus. Entweder man entwirft sein Model so, das man auf "viele zu viele" Beziehungen mit Hilfe einer Jointabelle verzichtet oder man macht folgendes.
Model:
Spoiler anzeigen
Das Entity Framwork legt eine Jointabelle an aber diese können wir nur über die Navigationseigenschaften ansprechen. Ansonsten ist diese versteckt.
Seedmethode
Spoiler anzeigen
Man braucht sich nicht um die Id's in der Jointabelle kümmern. Das macht das Entity Framework.
Ich hoffe, das kann mal jemand gebrauchen. Wenn jemand einen besseren Weg kennt, wäre ich sehr daran interessiert.
Gruß Helge
Nicht selten steht man vor der Aufgabe einige Beispieldaten in die Datenbank zu laden (seed). Bei einer "null oder 1 zu viele" oder "1 zu viele", ist das kein Problem. Doch wie sieht es bei einer "viele zu viele" Beziehung aus. Entweder man entwirft sein Model so, das man auf "viele zu viele" Beziehungen mit Hilfe einer Jointabelle verzichtet oder man macht folgendes.
Model:
C#-Quellcode
- public class Adresse
- {
- public Adresse()
- {
- Kunden = new HashSet<Kunde>();
- }
- public int Id { get; set; }
- public string Strasse_Nr { get; set; }
- public string Postleitzahl { get; set; }
- public string Ort { get; set; }
- public virtual ICollection<Kunde> Kunden { get; set; }
- }
- public partial class Kunde
- {
- public Kunde()
- {
- Adressen = new HashSet<Adresse>();
- }
- public int Id { get; set; }
- public string Name { get; set; }
- public string Vorname { get; set; }
- public string Anrede { get; set; }
- public int? FirmaId { get; set; }
- public virtual ICollection<Adresse> Adressen { get; set; }
- }
Das Entity Framwork legt eine Jointabelle an aber diese können wir nur über die Navigationseigenschaften ansprechen. Ansonsten ist diese versteckt.
Seedmethode
C#-Quellcode
- protected override void Seed(DeinContext context)
- {
- var borhel = new Kunde { Id = 10, Name = "Borad", Vorname = "Helmar", Anrede = "Herr", FirmaId = 1 };
- var bortru = new Kunde { Id = 11, Name = "Borad", Vorname = "Trude", Anrede = "Frau", FirmaId = 2 };
- var patmax = new Kunde { Id = 12, Name = "Pattok", Vorname = "Max", Anrede = "Herr", FirmaId = 2 };
- var gen34 = new Adresse { Id = 8, Strasse_Nr = "Gensingerstraße 34", Postleitzahl = "10896", Ort = "Berlin" };
- var bol69 = new Adresse { Id = 9, Strasse_Nr = "Bolzstraße 69", Postleitzahl = "10897", Ort = "Berlin" };
- var par78 = new Adresse { Id = 10, Strasse_Nr = "Parkstraße 78", Postleitzahl = "10895", Ort = "Berlin" };
- borhel.Adressen.Add(gen34);
- bortru.Adressen.Add(gen34);
- bortru.Adressen.Add(bol69);
- patmax.Adressen.Add(par78);
- patmax.Adressen.Add(bol69);
- context.Kunden.Add(borhel);
- context.Kunden.Add(bortru);
- context.Kunden.Add(patmax);
- context.SaveChanges();
- }
Man braucht sich nicht um die Id's in der Jointabelle kümmern. Das macht das Entity Framework.
Ich hoffe, das kann mal jemand gebrauchen. Wenn jemand einen besseren Weg kennt, wäre ich sehr daran interessiert.
Gruß Helge