2017-09-26 50 views
1

我有带有OData控制器的web api。模型是无法在WebApi OData中调用单个查询GET

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 /用户(123)

,所述的OData首先尝试调用得不到一个钥匙,并从表中返回所有记录。当我注释掉第一个get方法时,根本没有GET方法来访问这个URI。我犯了什么错误?

我试图让[ODataRoute]它不会改变任何东西。

回答

0

在你的代码,你的两个功能是Get()GetUser(int key) 他们都应该是“Get

而且不知道它的问题,但是对于Get(int)之一,如果它仍然不工作,请尝试更改SingleResult<UserDto>到只是UserDto