Загрузка определенных свойств из объекта в запросе EF C # - PullRequest
0 голосов
/ 25 ноября 2018

Пожалуйста, посмотрите следующий запрос:

Blogs = await _context.Blog
            .Include(b => b.Owner)
            .ToListAsync();

этот запрос будет загружать все блоги и владельца (объект пользователя) каждого блога, как я могу загрузить определенные поля из объекта Owener?

например, я хочу только загрузить Owner.Name и Owener.ID, мне не нужна другая информация (электронная почта, телефон, пароль, ....)

Ответы [ 3 ]

0 голосов
/ 25 ноября 2018

Вы можете использовать Выбрать так:

Blogs = await _context.Blog
            .Include(b => b.Owner)
            .Select(x => new {x.Owner.ID, x.Owner.Name})
            .ToListAsync();
0 голосов
/ 25 ноября 2018

Вы можете использовать этот код:

Blogs = await _context.Blog
            .Include(b => b.Owner)
            .Select(b => new
            {
              Name = b.Name,
              Id = b.OwnerID
            })
            .ToListAsync();
0 голосов
/ 25 ноября 2018

Делайте это вручную;

var someData = await (
        from blog in _context.Blog
        join owner in _context.Users on blog.OwnerID equals owner.ID
        select new { Text = blog.Text, OwnerName = owner.Name}) //select whatever you want
        .ToListAsync();

Это гарантирует, что только запрошенные данные «загружаются» из базы данных.


Другой вариант - выбрать из вашего запроса, если выиспользуется отложенная загрузка, это не гарантирует, что данные не запрашиваются из базы данных:

var someData = await _context.Blog
        .Include(b => b.Owner)
        .Select(c => new { Text = c.Text, OwnerName = c.Owner.Name}) //select what needed
        .ToListAsync();


Поскольку в вашем случае данные выбираются напрямую, включение не требуется:
var someData = await _context.Blog
        .Select(c => new { Text = c.Text, OwnerName = c.Owner.Name}) //select what needed
        .ToListAsync();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...