Выбрать внутри Включить в EF Core - PullRequest
0 голосов
/ 26 августа 2018

У меня есть объект, который выглядит следующим образом (для краткости он частично удален, он включает в себя множество других свойств):

public class Tender
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public string CreatorId { get; set; }
    [ForeignKey("CreatorId")]
    public virtual AppUser Creator { get; set; }
    public ICollection<TenderCircle> TenderCircles { get; set; } = new List<TenderCircle>();
}

Свойство TenderCircles используется для обеспечения связи «многие ко многим» сдругая сущность называется Circle.TenderCircle сущность выглядит следующим образом:

public class TenderCircle
{
    public int TenderId { get; set; }
    [ForeignKey("TenderId")]
    public Tender Tender { get; set; }
    public int CircleId { get; set; }
    [ForeignKey("CircleId")]
    public Circle Circle { get; set; }
}

Теперь я делаю следующий запрос (частично для краткости удален, обычно он включает в себя множество других операторов Include и ThenInclude):

return _context.Tenders
               .Include(t => t.Creator)
               .Include(t => t.TenderCircles.Select(tc => new { CirlceId = tc.CircleId, TenderId = tc.TenderId }))
               .ToList();

Но это просто не работает.Чего я хочу добиться, так это того, что я хочу получить только свойства TenderId и CircleId из TenderCircle и игнорировать фактические объекты Tender и Circle.Есть идеи как этого добиться в EF Core ?

1 Ответ

0 голосов
/ 26 августа 2018

Напишите ваш запрос следующим образом:

return _context.Tenders.Select(t => new TenderViewModel
                       {
                          Id = t.Id,
                          Creator = t.Creator,
                          TenderCircles = t.TenderCircles.Select(tc => new TenderCircle { CirlceId =  tc.CircleId, TenderId = tc.TenderId }).ToList();
                       }).ToList();

Затем TenderViewModel следующим образом:

public class TenderViewModel
{
   public int Id { get; set; }
   public AppUser Creator { get; set; }
   public List<TenderCircle> TenderCircles { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...