EFCore Include 函数适用于 Get 端点但不适用于 Put 端点

EFCore Include function works in Get endpoint but does not work in Put endpoint

您好,我最近在使用 IdentityServer4 和 EFCore 3.1.0,以下两段代码有一个非常奇怪的问题。结果是在ApiResourcesGetByIdController中,apiResourceGetById函数中包含了scope和secret的值。但是在 ApiResourcesUpdateController 中,resultUpdate 函数中不包含 scope 和 secret 的值。

这两个端点的用法是,前端调用GetById端点获取ApiResource对象,并在前端进行一些修改。然后前端调用 Update 端点更新数据库中的对象。

谁能帮忙看看哪里出了问题?谢谢

[Authorize]
[Route("ApiResources")]
[ApiController]
public class ApiResourcesGetByIdController : ControllerBase
{
    private readonly ConfigurationDbContext _configurationDbContext;

    public ApiResourcesGetByIdController(
            ConfigurationDbContext configurationDbContext)
    {
        _configurationDbContext = configurationDbContext;
    }

    [HttpGet]
    [Route("")]
    public IActionResult GetById([FromQuery]int id)
    {
        ApiResource apiResource = _configurationDbContext.ApiResources
            .Include(apiResource => apiResource.Scopes)
            .Include(apiResource => apiResource.Secrets)
            .FirstOrDefault(apiResource => apiResource.Id == id);

    }
}


[Authorize]
[Route("ApiResources")]
[ApiController]
public class ApiResourcesUpdateController : ControllerBase
{
    private readonly ConfigurationDbContext _configurationDbContext;

    public ApiResourcesUpdateController(
        ConfigurationDbContext configurationDbContext)
    {
        _configurationDbContext = configurationDbContext;
    }

    [HttpPut]
    [Route("")]
    public IActionResult Update([FromBody] ApiResource resource )
    {
        ApiResource result = _configurationDbContext.ApiResources
            .Include(apiResource => apiResource.Scopes)
            .Include(apiResource => apiResource.Secrets)
            .FirstOrDefault(ar => ar.Id == resource.Id);

        return Ok()
    }
}

不知道为什么,但我删除了文件并重新创建了它。然后它自己工作。