web-dev-qa-db-fra.com

L'expression Inclure le chemin doit faire référence à une propriété de navigation définie sur le chargement de type.in

J'essaie d'inclure un type anonyme comme ceci: je veux tous les attributs incomelist en plus de CompanyTitle, PeriodTypeName)

 var incomeList = ctx.IncomeLists.Include(i => new
                {
                    CompanyTitle = i.CompanyId.ToString() + "/" + i.Company.CompanyName,
                    PeriodTypeName = i.ListPeriods.Select(lp => lp.PeriodType.PeriodTypeName)
                }).ToList()

Ma section modèle comme ceci: enter image description here

mais j'obtiens l'exception suivante:

L'expression Inclure le chemin doit faire référence à une propriété de navigation définie sur le type. Utilisez des chemins en pointillés pour les propriétés de navigation de référence et l'opérateur Sélectionner pour les propriétés de navigation de la collection. Nom du paramètre: chemin

Le résultat doit être la source de données de Gridview.

14
Anyname Donotcare

Vous ne pouvez pas utiliser Inclure pour sélectionner des données comme celle-ci. Inclure est utilisé pour charger les données liées. Vous devez charger vos entités en utilisant Inclure puis sélectionner ce que vous voulez. N'oubliez pas de supprimer . ToString () de CompanyId. EF le fera pour vous. Votre requête devrait ressembler à ceci:

var incomeList = ctx.IncomeLists
    .Include(i => i.Company)
    .Include(i => i.ListPeriods.Select(lp => lp.PeriodType))
    .Select(i => new 
    {
        CompanyTitle =  i.CompanyId + "/" + i.Company.CompanyName,
        PeriodTypeNames = i.ListPeriods.Select(lp => lp.PeriodType.PeriodTypeName)
    })
    .ToList();
21
Adil Mammadov