我有与OData控制器的web api。模型是
public class UserDto
{
public int UserDtoId {get;set;}
public string Name {get;set;}
}
控制器中的我有两个方法
[EnableQuery]
public IQueryable<UserDto> Get();
[EnableQuery]
public SingleResult<UserDto> GetUser([FromODataUri] int key);
OData配置是:
ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<UserDto>("Users").EntityType.HasKey(e=>e.UserDtoId).Name = "User";
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: "odata",
model: builder.GetEdmModel());
当我尝试调用odata / Users(123)时,odata尝试首先调用get而不是使用键获取并返回表中的所有记录。当我注释掉第一个get方法时,根本没有用于此URI访问的GET方法。我犯错的地方?
我尝试使[ODataRoute]不会改变任何东西。
答案 0 :(得分:0)
在您的代码中,您的两个功能是Get()
和GetUser(int key)
他们都应该是'Get
'
也不确定是否重要,但对于Get(int)
,如果仍然无效,请尝试将SingleResult<UserDto>
更改为UserDto