मेरे पास GetAll कथन है जो प्रत्येक व्यक्ति को पकड़ लेता है और उनके पास टिकटों के संग्रह को पॉप्युलेट करता है। मेरी कक्षाएं इस प्रकार संक्षिप्त हैं:

    public class Person
    {
      public int Id {get;set;}
      public string Name {get;set;}
      public ICollection<Ticket> Tickets {get;set;}
    }

    public class Ticket
    {
      public int Id {get;set;}
      public int PersonId {get;set;}
      public string MovieName {get;set;}
    }

मैं अनुरोध को पॉप्युलेट करने के लिए dbcontext से linq के साथ कक्षाएं उत्पन्न करने के लिए इकाई ढांचे का उपयोग कर रहा हूं।

    public async Task<List<Person>> GetPersonsAsync()
    {
        return await _context.Person.GroupJoin(_context.Ticket,
                p => p.Id,
                c => c.PersonId,
                (per, tix) => PopulatePerson(per,tix) )
            .ToListAsync();
    }

    private Person PopulatePerson(Person per, IEnumerable<Ticket> tix)
    {
        per.Tickets= tix.ToList();
        return per;
    }

यह काम करता है लेकिन इसे पूरा करने के लिए मुझे अलग निजी PopulatePerson विधि बनाना पड़ा। मैं एक निजी पद्धति बनाने से कैसे बच सकता हूँ और उसी GroupJoin कथन में टिकटों की सूची को कैसे भर सकता हूँ?

-1
ModestMonk 9 मई 2019, 00:35

1 उत्तर

सबसे बढ़िया उत्तर

आप Include() का उपयोग कर सकते हैं और EntityFramework को आपके लिए जॉइन करने दे सकते हैं:

public async Task<List<Person>> GetPersonsAsync()
{
    return await _context.Person
        .Include(p => p.Tickets)
        .ToListAsync();
}
2
Marc 8 मई 2019, 21:42