如何将ObjectId传递给ODataController GET方法?
因为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,正确的方法是什么,或者我完全使用了错误的方法?
发布于 2014-10-10 13:50:18
您可能需要在此处查看教程http://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/OData/v4/ODataServiceSample/ODataService。您似乎缺少输入参数的FromODataUri。
发布于 2014-10-11 17:14:15
这应该是可行的:
[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')as OData URL支持字符串作为参数。
发布于 2020-08-29 03:48:02
ObjectId是一个类。使用属性注释“key”和annotation FromODataUri。
public Team GetTeam([FromODataUri] string key)
{
var teams = mongoDatabase.GetCollection("Teams");
var team = teams.FindOneById(ObjectId.Parse(key));
...
}https://stackoverflow.com/questions/26148335
复制相似问题