Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将收集发布到OData控制器_C#_Asp.net Web Api_Odata - Fatal编程技术网

C# 如何将收集发布到OData控制器

C# 如何将收集发布到OData控制器,c#,asp.net-web-api,odata,C#,Asp.net Web Api,Odata,如何配置OData模型以执行以下操作: POST /api/OrderHeaders(id)/OrderLines POST /api/OrderLines 这样,post的正文包含要过帐到关联orderHeader的订单行集合 OData支持这种方法吗 看起来,oData似乎只支持在现有实体之间创建关系,而我试图做的是创建相关实体 我尝试过的另一种方法是执行以下操作: POST /api/OrderHeaders(id)/OrderLines POST /api/OrderLines

如何配置OData模型以执行以下操作:

POST /api/OrderHeaders(id)/OrderLines
POST /api/OrderLines
这样,post的正文包含要过帐到关联orderHeader的订单行集合

OData支持这种方法吗

看起来,oData似乎只支持在现有实体之间创建关系,而我试图做的是创建相关实体

我尝试过的另一种方法是执行以下操作:

POST /api/OrderHeaders(id)/OrderLines
POST /api/OrderLines
同样,文章的正文包含订单行对象的集合。但服务器端的此方法始终具有空模型:

public async Task<IHttpActionResult> Post(List<OrderLine> model)
{
}
公共异步任务Post(列表模型)
{
}
json只是没有序列化到预期的模型

因此,我再次改变了我的方法,其中我有一个定义如下的模型:

public class LinePostModel
    {
        [Key]
        public int OrderId { get; set; }
        public List<OrderLine> OrderLines { get; set; }
    }
public async Task<IHttpActionResult> Post(LinePostModel model)
{
}
公共类LinePostModel
{
[关键]
公共int-OrderId{get;set;}
公共列表顺序行{get;set;}
}
我的OData控制器方法如下:

public class LinePostModel
    {
        [Key]
        public int OrderId { get; set; }
        public List<OrderLine> OrderLines { get; set; }
    }
public async Task<IHttpActionResult> Post(LinePostModel model)
{
}
public异步任务发布(LinePostModel模型)
{
}
就验证模型并将其保存到数据库而言,这种方法是有效的。但这给我留下了另一个问题,我已经发布了


oData是否支持将集合发布到控制器,然后将相同的集合返回到客户端的概念?如果是的话,我遗漏了什么?

你有没有找到任何一篇文章的答案?没有……从来没有。因此,我们采用了将订单行逐个发布到服务器的方法,而不是在集合中。对于我们的特定场景来说,这实际上效果更好。如果您必须以全有或全无的方式发布集合,那么请使用我上面提到的另一个问题中的设计,并在成功发布结果后执行GET以检索发布的行。