Как запросить все поля модели наследования TPH в ядре фреймворка EntityC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как запросить все поля модели наследования TPH в ядре фреймворка Entity

Сообщение Anonymous »

Я внедряю наследование таблицы в иерархию (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");
});
}
Проблема:
Мне нужно запросить все поля сущности «Компонент» и получить унаследованные модели (TextField, NumberField и т. д.) с их конкретными свойствами. Однако я изо всех сил пытаюсь добиться этого эффективно.
Что я пробовал:
Mapperly IQueryable Projection: я пытался использовать Mapperly для проецирования, но он не поддерживает этот вариант использования.
Сопоставление свойств в модели компонентов. Я пытался добавить свойства сопоставления для определенных типов в модели компонентов, но EF Core попытался создать теневые внешние ключи. , что вызвало проблемы.
Ручное сопоставление с определенными DTO: я пытался вручную сопоставить определенные DTO, но мне не удалось использовать структуры переключателей или if-else в деревьях выражений.
Вопрос:
Как я могу запросить все поля сущности «Компонент» и получить унаследованные модели с их конкретными свойствами в EF Core? Существуют ли какие-либо передовые методы или альтернативные подходы для решения этого сценария?

Подробнее здесь: https://stackoverflow.com/questions/793 ... ework-core
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как запросить все поля модели наследования TPH в Entity Framework Core
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Как запросить все поля модели наследования TPH?
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Как запрашивать все поля модели наследования TPH в EF Core
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Решение проблем наследования и миграции TPH в Entity Framework Core с многопроектной архитектурой
    Anonymous » » в форуме C#
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Решение проблем наследования и миграции TPH в Entity Framework Core с многопроектной архитектурой
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»