Wie man alle Felder eines TPH -Vererbungsmodells im Entitäts -Framework -Kern abfragtC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Wie man alle Felder eines TPH -Vererbungsmodells im Entitäts -Framework -Kern abfragt

Post by Anonymous »

Ich implementiere die Vererbung von Tabellen-per-hierarchie (TPH) in meinem Projekt mit dem Entity Framework Core (EF Core). Mein Ziel ist es, alle Felder der Komponentenentität abzufragen und die ererbten Modelle (Textfield, Numberfield usw.) mit ihren spezifischen Eigenschaften abzurufen. < /P>
Hier ist eine vereinfachte Version meiner Modelle: < /p>
public class Component : BaseEntity
{
public Guid Id { get; set; }
public required string Name { get; set; }
public ICollection Fields { get; set; } = [];
}

public abstract class Field
{
public Guid Id { get; set; }
public required string Name { get; set; }
public FieldType Type { get; set; }
public Guid ComponentId { get; set; }
public Component? Component { get; set; }
}

public class TextField : Field
{
public int? MaxLength { get; set; }
public bool IsMultiline { get; set; }
}

public class NumberField : Field
{
public decimal? MinValue { get; set; }
public decimal? MaxValue { get; set; }
}

protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity(builder =>
{
builder
.HasDiscriminator(f => f.Type)
.HasValue(FieldType.Text)
.HasValue(FieldType.Number)
.HasValue(FieldType.OpenList);
});

builder.Entity(builder =>
{
builder.Property(t => t.MaxLength).HasColumnName("MaxLength");
builder.Property(t => t.IsMultiline).HasColumnName("IsMultiline");
});

builder.Entity(builder =>
{
builder.Property(n => n.MinValue).HasColumnName("MinValue");
builder.Property(n => n.MaxValue).HasColumnName("MaxValue");
});
}
< /code>
Problem:
Ich muss alle Felder der Komponentenentität abfragen und die ererbten Modelle (Textfield, Numberfield usw.) mit ihren spezifischen Eigenschaften abrufen. Ich kämpfe jedoch darum, dies effizient zu erreichen. Es unterstützt diesen Anwendungsfall jedoch nicht. , was Probleme verursachte.
Frage:
Wie kann ich alle Felder der Komponentenentität abfragen und die ererbten Modelle mit ihren spezifischen Eigenschaften im EF -Kern abrufen? Gibt es Best Practices oder alternative Ansätze, um dieses Szenario zu bewältigen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post