EFCore Include函数在Get端点中起作用,但在Put端点中不起作用

时间:2020-04-26 14:11:07

标签: ef-core-3.1

嗨,我最近正在使用IdentityServer4和EFCore 3.1.0,下面的两段代码有一个很奇怪的问题。结果是在ApiResourcesGetByIdController函数中的apiResource中,GetById中包含了scope和secret的值。但是在ApiResourcesUpdateController中,result函数中的Update不包含作用域和密钥的值。

这两个端点的用法是,前端调用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()
    }
}

1 个答案:

答案 0 :(得分:0)

不知道为什么,但是我删除了文件并重新创建了它。然后它就可以独立工作。