Как вернуть реляционные данные из БД в ASP. Net Core Web API Controller - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть 3 реляционные таблицы

1-сообщения, 2-комментарии, 3-изображения

В таблицах «Комментарии» и «Изображения» есть «посты» внешнего ключа. Я хочу вернуть полную информацию о записи из всех таблиц вместе в ASP. Net Core Web API с методом GET. Я знаю, как создать контроллер и такие вещи. Моя проблема связана с получением и возвратом данных.

1 Ответ

0 голосов
/ 11 апреля 2020

Если вы используете EFCore, вы можете сделать это.

  • Создать ApiController
  • Ввести свой DbContext из Constructor
  • Чтение данных из DB
  • Возвращаемые данные
[Route("api/[controller]")]
[ApiController]
public class PostController : BaseController
{
    private readonly ApplicationDbContext _dbContext;//Your DbContext
    public PostController(ApplicationDbContext dbContext)
    {
        _dbContext = dbContext;
    }
    [HttpGet]
    public IActionResult Get()
    {
        var data = _dbContext.Post.Include(a=> a.Comments).Include(a=> a.Images).ToList();
        return Ok(data);
    }

}

В . Net Ядро Lazy loading отключено, и при выборе таблицы из отношение базы данных none загружено по умолчанию.

Если вы хотите получить все данные с отношениями, вы должны использовать Include для загрузки таких отношений

dbContext.Post.Include(a=> a.Comments).Include(a=> a.Images).ToList();

ваши таблицы базы данных должны быть такими

public class Post
{
    public ICollection<Images> Images { get; set; }
    public ICollection<Comments> Comments { get; set; }
}
public class Comments
{
    public Post Post { get; set; }
}
public class Images
{
    public Post Post { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...