2.4.5 EF Core -- 查询
- 关联数据加载
- 客户端与服务端运算
- 跟踪与不跟踪
- 复杂查询运算
- 原生 SQL 查询
- 全局查询筛选器
关联数据加载
学员和助教都在项目分组中,调整模型,删除 Assistant
ProjectGroup 添加 Member 列表
public List<Member> Members { get; set; }
Member 添加 是否助教判断,分组信息
public bool IsAssistant { get; set; }
public string GroupId { get; set; }
public ProjectGroup Group { get; set; }
Task 添加 学员信息
public Member Member { get; set; }
接下来为每一个表添加一个控制器
一个 Project 对应多个 ProjectGroup
ProjectGroup
namespace LighterApi.Controller
{
[ApiController]
[Route("api/[controller]")]
public class ProjectGroupController : ControllerBase
{
private readonly LighterDbContext _lighterDbContext;
public ProjectGroupController(LighterDbContext lighterDbContext)
{
_lighterDbContext = lighterDbContext;
}
[HttpPost]
public async Task<IActionResult> Create([FromBody] ProjectGroup group)
{
_lighterDbContext.ProjectGroups.Add(group);
await _lighterDbContext.SaveChangesAsync();
return StatusCode((int) HttpStatusCode.Created, group);
}
[HttpGet]
[Route("{id}")]
public async Task<IActionResult> GetAsync(string id, CancellationToken cancellationToken)
{
var project = await _lighterDbContext.Projects.FirstOrDefaultAsync(p => p.Id == id, cancellationToken);
return Ok(project);
}
}
}
迁移
dotnet ef migrations add RefactoryProjectEntities
dotnet ef database update
Entity 主键添加自动生成
/// <summary>
/// 主键Id
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public string Id { get; set; }
启动程序,Postma