2016-08-08 2 views
0

Каков наилучший способ получить данные для зарегистрированного пользователя в Api. Я могу получить данные для всех пользователей просто отлично.Извлечение данных для зарегистрированных пользователей

'ApplicationDbContext':

public DbSet<Category> Categories { get; set; } 

'ApplicationUser':

public ICollection<Category> Categories { get; set; } 

мой Repository:

public class CategoryRepository : ICategoryRepository 
{ 
    private ApplicationDbContext _ctx; 

    public CategoryRepository(ApplicationDbContext ctx) 
    { 
     _ctx = ctx; 
    } 

    //to do 
    public IEnumerable<Category> GetAll(string username) 
    { 
     return _ctx.Users.First(...).Categories.Include(x => x.Tasks); 
    } 

    public IEnumerable<Category> GetAllForFromAllUsers() 
    { 
     return _ctx.Categories.Include(x => x.Tasks); 
    } 
} 

Как вы уже заметили выше, я не могу использовать метод расширения «Включить 'на ICollection. Каков наилучший способ получить данные для конкретного пользователя?

+0

Попробуйте _ctx.Users.Include (х => x.Categories) .Первый (...) Категории. –

+2

Ах, но вы имели в виду многоуровневое! извините ... Затем прочтите следующее: https://docs.efproject.net/en/latest/querying/related-data.html#including-multiple-levels –

+0

Невозможно использовать метод расширения Include на ICollection – lucas

ответ

0

Вы можете попробовать это?

var users = _ctx.Users 
    .Include(user => user.Categories) 
     .ThenInclude(cat => cat.Tasks) 
    .Where(u => u.username == "xx") 
    .ToList(); 

От Loading Related Data

+0

Да, я протестировал, это именно то решение, tahnks – lucas

+0

рад помочь :) –

Смежные вопросы