Quelle: dotnetpro
Mapping auf JSON-Spalten in Entity Framework Core 7.0 12.12.2022, 00:00 Uhr

Zusammengepfercht

Entity Framework Core 7.0 erlaubt, abhängige Objekte in JSON-Spalten in einer Tabelle statt in eigenständigen Tabellen zu speichern.
Ausgangspunkt für die Überlegungen in diesem Beitrag der Datenzugriffskolumne sind die fünf Klassen Company, LimitedLiabilityCompany, Freelancer, Address und Management in Listing 1, die zusätzlich in Bild 1 visualisiert sind. Ein Objekt des Typs Company besitzt eine Adresse als Instanz der Klasse Address (1:1-Beziehung) und kann eine Liste von Personen mit verschiedenen Rollen als Instanz der Klasse Management besitzen (1:N-Beziehung). Company ist aber eine abstrakte Basisklasse; konkrete Instanzen erzeugt man anhand der abgeleiteten Klassen LimitedLiabilityCompany und Freelancer, wobei nur die erstgenannte Klasse der Basisklasse weitere Eigenschaften hinzufügt.
Listing 1: Beispielmodell aus fünf Klassen
public abstract class Company

{

  public int CompanyID { get; set; } // Primary Key

  [StringLength(50)]

  public string Name { get; set; }

  public Address Address { get; set; }

  public List<Management>

    ManagementSet { get; set; } = new();

}



public class Address

{

  public int AddressID { get; set; }

  [StringLength(50)]

  public string City { get; set; }

  [StringLength(50)]

  public string Street { get; set; }

  [StringLength(10)]

  public string Postcode { get; set; }

  [StringLength(50)]

  public string Country { get; set; }

  public Company Company { get; set; }

  public int CompanyId { get; set; } // Foreign Key

}

public class Management

{

  public int ID { get; set; } // Primary Key

  public string Name { get; set; }

  public string Role { get; set; }

  public int CompanyId { get; set; } // Foreign Key

}



public class LimitedLiabilityCompany : Company

{

  [Required]

  [MaxLength(100)]

  public string CommercialRegister { get; set; }

  [Required]

  [MaxLength(50)]

  public string CommercialRegisterID { get; set; }

}



public class Freelancer : Company

{



}

Jetzt 1 Monat kostenlos testen!

Sie wollen zukünftig auch von den Vorteilen eines plus-Abos profitieren? Werden Sie jetzt dotnetpro-plus-Kunde.
  • + Digitales Kundenkonto,
  • + Zugriff auf das digitale Heft,
  • + Zugang zum digitalen Heftarchiv,
  • + Auf Wunsch: Weekly Newsletter,
  • + Sämtliche Codebeispiele im digitalen Heftarchiv verfügbar