Я внедряю наследование таблицы в иерархию (TPH) в моем проекте с использованием основного ядра Entity Framework (EF Core). Моя цель - запросить все поля объекта компонента и получить унаследованные модели (Textfield, Numberfield и т. Д.) С их конкретными свойствами. < /P>
Вот упрощенная версия моих моделей: < /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>
Проблема:
Мне нужно запросить все поля объекта компонента и получить унаследованные модели (Textfield, Numberfield и т. Д.) С их конкретными свойствами. Тем не менее, я изо всех сил пытаюсь достичь этого. Но это не поддерживает этот вариант использования. < /p>
Свойства отображения на модели компонента: я попытался добавить свойства отображения для конкретных типов на модели компонента, но EF Core попытался создать тени иностранных ключей , что вызвало проблемы.
Ручное отображение с конкретными DTO: я попробовал вручную отображать с конкретными DTO, но я не мог использовать переключатель или структуры if-else в деревьях экспрессии.
Вопрос:
Как я могу запросить все поля объекта компонента и получить унаследованные модели с их конкретными свойствами в EF Core? Есть ли лучшие практики или альтернативные подходы для обработки этого сценария?
Подробнее здесь: https://stackoverflow.com/questions/793 ... ework-core
Как запросить все поля модели наследования TPH в Entity Framework Core ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение