【发布时间】:2020-04-11 10:55:01
【问题描述】:
我有 3 个关系表
1-帖子, 2条评论, 3-图像
“评论”和“图片”表有“帖子”外键。我想使用 GET Method 在 ASP.Net Core Web API 中从所有表中返回有关帖子的完整信息。我知道如何创建控制器等。我的问题是关于检索和返回数据。
【问题讨论】:
标签: c# sql-server asp.net-core asp.net-web-api
我有 3 个关系表
1-帖子, 2条评论, 3-图像
“评论”和“图片”表有“帖子”外键。我想使用 GET Method 在 ASP.Net Core Web API 中从所有表中返回有关帖子的完整信息。我知道如何创建控制器等。我的问题是关于检索和返回数据。
【问题讨论】:
标签: c# sql-server asp.net-core asp.net-web-api
如果您使用的是EFCore,您可以这样做。
Constructor 注入您的DbContext
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 Core 中Lazy loading 是禁用的,当您从数据库中选择表时,默认情况下不会加载任何关系。
如果你想获取所有有关系的数据,你必须使用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; }
}
【讨论】: