Включить Entity Framework Core (цикл данных)

Я хочу включить в список рабочих станций подключенные устройства. Но я не только получаю устройства. Я также получаю рабочую станцию. Это какая-то петля и ненужная. Как я могу перестать включать рабочую станцию ​​снова, потому что это также включает в себя все виды других списков?

//returns to much
var workstations = this.context.TWorkstations 
   .Include(x => x.TDevices)
   .AsQueryable();

//crash -> see error msg
var workstations = this.context.TWorkstations 
   .Include(x => x.TDevices).ThenInclude(d => d.Select(y => y.Alias))
   .AsQueryable();

//crash -> see error msg
var workstations = this.context.TWorkstations 
   .Include(x => x.TDevices).ThenInclude(d => d.Alias))
   .AsQueryable();

Ошибка:

Выражение «d.Alias» недопустимо внутри операции «Включить», поскольку он не представляет собой доступ к свойству: 't => t.MyProperty'. К целевые переходы, объявленные для производных типов, используйте приведение ('t => ((Derived)t).MyProperty') или оператор 'as' ('t => (t as Производное).MyProperty'). Доступ к навигации по коллекции можно фильтровать по составление «Где», «Заказать по убыванию», «По убыванию», «Пропустить или взять» операции. Дополнительные сведения о включении связанных данных см. http://go.microsoft.com/fwlink/?LinkID=746393.

[
{
    "id": 102,
    "workstation": "workstationName",
    "comments": [],
    "devices": [
        {
            "id": 93524,
            "alias": "xxx",
            "workstation": {
                "id": 102,
                "workstation": "workstationName",

Внутри this.context у вас есть что-то для TDevices? Как устроена ваша база данных? У устройств есть собственная таблица?

gunr2171 24.12.2020 18:08
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
832
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Include предназначен для возврата всех данных для объекта, а также автоматически инициализирует все связанные свойства, которые уже загружены. Поэтому просто используйте полностью пользовательскую проекцию.

var workstations = 
   from w this.context.TWorkstations 
   select new 
   {
      w.Id,
      workstation = w.workstationName
      devices = w.TDevices.Select(d => d.Alias).ToArray()
   };

Другие вопросы по теме