Функция EFCore Include работает в конечной точке Get, но не работает в конечной точке Put - PullRequest
0 голосов
/ 26 апреля 2020

Привет, я недавно работаю с 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 голосов
/ 27 апреля 2020

Не знаю почему, но я удалил файл и воссоздал его. Тогда это работает само по себе.

...