EFCore Include 函数适用于 Get 端点但不适用于 Put 端点
EFCore Include function works in Get endpoint but does not work in Put endpoint
您好,我最近在使用 IdentityServer4 和 EFCore 3.1.0,以下两段代码有一个非常奇怪的问题。结果是在ApiResourcesGetByIdController
中,apiResource
在GetById
函数中包含了scope和secret的值。但是在 ApiResourcesUpdateController
中,result
在 Update
函数中不包含 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()
}
}
不知道为什么,但我删除了文件并重新创建了它。然后它自己工作。
您好,我最近在使用 IdentityServer4 和 EFCore 3.1.0,以下两段代码有一个非常奇怪的问题。结果是在ApiResourcesGetByIdController
中,apiResource
在GetById
函数中包含了scope和secret的值。但是在 ApiResourcesUpdateController
中,result
在 Update
函数中不包含 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()
}
}
不知道为什么,但我删除了文件并重新创建了它。然后它自己工作。