我创建了ASP.NET WebAPI
OData
支持。
Project类有一个名为ProjectType
的字段,其中包含可为空的整数类型声明:
public class Project
{
public string Id { get; set; }
public string Name { get; set; }
public int? ProjectType { get; set; }
}
我的WebAPI控制器:
public class LocalModelsController : ODataController
{
public IHttpActionResult Patch([FromODataUri] string key, Delta<Project> patch)
{
var projectUpdated = patch.GetEntity();
var projectType = projectUpdated.ProjectType;
//projectType is null here
}
}
当我从客户端向WebAPI发送PATCH http请求(具有BSON
内容类型格式)时,Project对象具有正确的Id和Name值,但ProjectType始终为null。
但是当我将ProjectType
字段类型的类型从int?
更改为double?
时,它的工作正确:
public double? ProjectType { get; set; }
这是ODATA的限制还是我遗漏了什么?
答案 0 :(得分:0)
我已经解决了。这只是因为我使用BSON
格式通过HTTP请求传输对象。如果我使用JSON
代替它,效果很好。不确定BSON
格式有什么问题。
答案 1 :(得分:-2)
您可能只需要将projectUpdated
转换为正确的类型。
例如
var projectUpdated = patch.GetEntity();
Project p = projectUpdated as Project;
if (p != null)
{
var projectType = p.ProjectType;
}