Я хочу включить в список рабочих станций подключенные устройства. Но я не только получаю устройства. Я также получаю рабочую станцию. Это какая-то петля и ненужная. Как я могу перестать включать рабочую станцию снова, потому что это также включает в себя все виды других списков?
//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",
Include
предназначен для возврата всех данных для объекта, а также автоматически инициализирует все связанные свойства, которые уже загружены. Поэтому просто используйте полностью пользовательскую проекцию.
var workstations =
from w this.context.TWorkstations
select new
{
w.Id,
workstation = w.workstationName
devices = w.TDevices.Select(d => d.Alias).ToArray()
};
Внутри
this.context
у вас есть что-то дляTDevices
? Как устроена ваша база данных? У устройств есть собственная таблица?