2014-10-01 68 views
1

如何將ObjectId傳遞到ODataController GET方法中?MongoDB ODataController獲取方法

由於ObjectId存在文檔的唯一標識符,我首先想到的是做這樣的事情,其中​​「542978c4e4b0e67da1edc7f3」是的ObjectId:

odata/Teams(542978c4e4b0e67da1edc7f3) 

但是當我這樣做,我GET方法不不挑這件事,該ObjectId存在空{} 000000000000000000000000:

public Team GetTeam(ObjectId id) 
     { 
      var teams = mongoDatabase.GetCollection("Teams"); 
      var team = teams.FindOneById(id); 
.... 

我只是剛剛開始使用MongoDB的,什麼是該做的正確的方式,還是我完全使用了錯誤的方法呢?

回答

0

這應該工作:

[EnableQuery] 
public IHttpActionResult GetTeam([FromODataUri] string id) 
{ 
    var teams = mongoDatabase.GetCollection("Teams"); 

    // convert the string 'id' to BsonValue 'bsonId' 
    ...... 

    var team = teams.FindOneById(bsonId); 

    // convert 'team' to the entity type Team object 'team' 
    ...... 

    return Ok(team); 
} 

然後通過查詢設置的實體:

GET odata/Teams('542978c4e4b0e67da1edc7f3') 

爲OData的URL支持字符串作爲參數。

+0

將字符串'id'轉換爲BsonValue'bsonId'的正確語法是什麼? – user517406 2014-10-12 10:25:14

+0

@ user517406只是「BsonValue bsonValue = id;」 – 2014-10-13 01:54:17