【发布时间】:2019-09-23 06:18:53
【问题描述】:
我正在尝试[EnableQuery] 以 id 作为示例的路线(用户),如果我执行以下操作:
GET /users/1?$expand=Character
我想获取 ID 为 1 的用户及其字符,但目前它在字符上返回 null:
{"character":null,"id":1,"username":"Iterer","password":"motdepasse","characterId":1}
但是在获取所有用户的(全局)路线上:
GET /users?$expand=Character
如您所见,我得到了用户的角色:
[{"character":{"id":1,"name":"Name"},"id":1,"username":"Iterer","password":"motdepasse","characterId":1}]
这是我的控制器的操作:
// GET: api/Users
[HttpGet]
[EnableQuery]
public ActionResult<IQueryable<UserEntity>> GetUsers()
{
return Ok(_context.Users);
}
// GET: api/Users/5
[HttpGet("{id}")]
[EnableQuery]
public ActionResult<IQueryable<UserEntity>> GetUserEntity(long id)
{
var userEntity = _context.Users.Where(u => u.Id == id).FirstOrDefault();
if (userEntity == null)
{
return NotFound();
}
return Ok(userEntity);
}
两者都使用 IQueryable 接口,但我仍然不明白为什么它不起作用,这是完整的控制器:
https://github.com/myerffoeg/gaium-api/blob/master/Gaium/Controllers/UsersController.cs
还有我的启动文件:
https://github.com/myerffoeg/gaium-api/blob/master/Gaium/Startup.cs
此外,如果您有一些最佳实践可以分享,我们将不胜感激!
【问题讨论】:
-
尝试 odata 语法 GET /users(1)?$expand...
-
当我尝试 GET /users(1) 或 /Users(1) 我得到 404。
-
好的,那么您缺少在启动时配置的 odata 路由前缀,例如 /odata/users(1)...
-
我添加了我的 MapODataServiceRoute 与 api 作为路由前缀 & 我扩展了我的控制器上的 ODataController 但我仍然得到一个带有 /users(1) 的 404。
-
看看他的 github-repo:github.com/damienbod/AspNetCoreOData
标签: c# asp.net-core entity-framework-core odata