我有一个简单的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 );
当我这样做时,' fooObj'在Post方法中为null。但是,当我设置“id”时,请求中的属性为非null值(即使是空字符串),它似乎工作正常 -
Foo newFoo = new Foo()
{
id = "",
name = "Simple foo"
}
我在这里缺少什么?
答案 0 :(得分:0)
如果您查看$ metadata,则关键属性“ id”不可为空。在OData模型注册期间,您应该可以将其设置为可选。我有一个类似的问题,但我使用的是Microsoft.AspNetCore.OData v7.0.1。我不确定您使用的是哪个版本的OData,但是我的方式是在构建模型的过程中:
builder.EntityType<Foo>().Property(p => p.Id).IsOptional();