Как включить производное свойство типа, содержащегося в Списке - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть контекст данных со списком конвейеров. Я хочу запросить один конвейер, содержащий все его свойства и подчиненные свойства. Один трубопровод имеет список этапов. Базовый тип этапа является абстрактным. В списке могут быть этапы разных дочерних типов, например, это SpecialStage. У SpecialStage есть свойство Settings типа SpecialStageSettings. Я особенно хочу загрузить этот объект SpecialStageSettings в запросе.

В Entity Framework 6.x я попытался

var pipeline = context.Pipelines.Include(x => x.Stages).SingleOrDefault(x => x.Id == idOfAddedPipeline);

, но это не работает полностью, поскольку свойство Settings в SpecialStage тип остается нулевым. Как я могу включить все вложенные свойства и вложенные свойства в результат запроса?

Модель данных следующая:

    public abstract class EntityBaseModel<TKey>
    {
        public TKey Id { get; set; }
    }

    public class Pipeline : EntityBaseModel<string>
    {
        public List<Stage> Stages { get; set; }
    }

    public abstract class Stage : EntityBaseModel<string> { }

    public class SpecialStage : Stage
    {
        public SpecialStageSettings Settings { get; set; }
    }

    public abstract class StageSettings : EntityBaseModel<string> { }

    public class SpecialStageSettings : StageSettings
    {
        public double Timeout { get; set; }

        public int TriggerMode { get; set; }
    }

1 Ответ

0 голосов
/ 12 февраля 2020

Чтобы включить сущность настроек, используйте Выберите и укажите сущность, которую хотите загрузить.

var pipeline = context.Pipelines.Include(x => x.Stages.Select(s => s.Settings)).SingleOrDefault(x => x.Id == idOfAddedPipeline);

Вам нужно будет выбрать каждую сущность, которую вы хотите sh загрузить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...