Затем включить в Entity Framework .net core 2.0

#.net #entity-framework #asp.net-web-api

#.net #entity-framework #asp.net-web-api

Вопрос:

У меня есть вложенные модели, которые называются PositionLevel , PositionLevelCompanyLookup Company , CompanySub GetDetail . Я хочу получить все данные моделей в ThenInclude функции с помощью,,. Но все данные модели не были получены, и я не мог видеть причины для этого.

Как мне это сделать?

 public class PositionLevel : DynexModel
{
    public string Description { get; set; }
    [JsonIgnore]
    public List<PositionLevelCompanyLookup> Companies { get; set; }

    [NotMapped]
    public virtual List<Company> CompanyList => this.Companies?.Select(p => p.Company).ToList();
}

public class PositionLevelCompanyLookup : DynexModel
{
    public int PositionLevelId { get; set; }
    public PositionLevel PositionLevel { get; set; }

    public int CompanyId { get; set; }
    public Company Company { get; set; }
}

public class Company : DynexModel
{
    public string Name { get; set; }
    [JsonIgnore]
    public List<CompanySub> SubCompanies { get; set; }

    [NotMapped]
    public virtual List<Company> SubCompanyList => this.SubCompanies?.Select(p => p.SubCompany).ToList();
}

public class CompanySub : DynexModel
{
        public int CompanyId { get; set; }
        public Company Company { get; set; }

        public int SubCompanyId { get; set; }
        public Company SubCompany { get; set; }
}

public ActionResult<PositionLevel> GetDetail(int id)
{
    var res = _context.Entity<PositionLevel>()
             .Include(p => p.Companies)
             .ThenInclude(p => p.Company)
             .ThenInclude(p => p.SubCompanies)
             .FirstOrDefault(p => p.Id == id);

    return res ;
 }
  

Ответ №1:

Я думаю, у вас проблема, есть [NotMapped] тег на CompanyList , я думаю, EF игнорирует main Include и с ним ThenInclude тоже попробуйте протестировать его, удалив [NotMapped] тег.

Извините за мой английский.