Asp.net web api Post方法上的OData null参数

Asp.net web api Post方法上的OData null参数,asp.net-web-api,odata,Asp.net Web Api,Odata,我有一个简单的ASP.NET WebApi ODataV4控制器- public class FooController : ODataController { [HttpPost] public string Post([FromBody] Foo fooObj) { ... } } Foo模型如下所示,Foo在EDM模型中定义为EntityType- public class { [Key] string id {get ;

我有一个简单的ASP.NET WebApi ODataV4控制器-

public class FooController : ODataController
{
    [HttpPost]
    public string Post([FromBody] Foo fooObj)
    {
        ...
    }
}
Foo模型如下所示,Foo在EDM模型中定义为EntityType-

public class
{
    [Key]
    string id {get ; set;}

    string name {get; set;}
}
我为这个模型生成了ODataClient,并试图发布一个新的Foo对象-

FooContext container = new FooContext(..);
Foo newFoo = new Foo() 
{
      name = "Simple foo"
}
container.AddToFoos(newFoo );
当我这样做时,Post方法中的'fooObj'为null。但是,当我将请求中的'id'属性设置为非null值(甚至是空字符串)时,它似乎工作正常-

Foo newFoo = new Foo() 
{
      id = "",
      name = "Simple foo"
}

有什么指示我在这里遗漏了什么吗

如果查看$metadata,则键属性“id”不可为空。在OData模型注册期间,您应该能够将其设置为可选。我也有类似的问题,但我使用的是Microsoft.AspNetCore.OData v7.0.1。我不确定您使用的是什么版本的OData,但我这样做的方式是在构建模型的过程中:

builder.EntityType<Foo>().Property(p => p.Id).IsOptional();
builder.EntityType().Property(p=>p.Id).iso可选();

如果查看$metadata,则键属性“id”不可为空。在OData模型注册期间,您应该能够将其设置为可选。我也有类似的问题,但我使用的是Microsoft.AspNetCore.OData v7.0.1。我不确定您使用的是什么版本的OData,但我这样做的方式是在构建模型的过程中:

builder.EntityType<Foo>().Property(p => p.Id).IsOptional();
builder.EntityType().Property(p=>p.Id).iso可选();