我使用带有EF6的Odata Webapi,我的模型如下
public class Company
{
Public Company()
{
Products = new List<Product>();
}
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
public List<Product> Products { get; set; }
}
public class Product
{
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
}
我需要公开一个终点来将产品添加到现有公司。 终点必须如下所示。
Post: ~odata/Company(1)/Products with body as List of products json.
body:[{"Name":"Product1"},{"Name":"Product2"}]
答案 0 :(得分:1)
我建议为此目的使用绑定的ODataAction。 您需要传入包含产品列表的DTO。
DTO的一个例子是:
public class CreateProductsDTO
{
List<Product> Products { get; set; }
}
然后您需要向公司控制器注册绑定操作:
var action = builder.EntityType<Company>().Action("AddProducts");
action.Parameter<CreateProductsDTO>("Value");
在控制器中,您需要定义如下操作:
[HttpPost]
public async Task<IHttpActionResult> AddProducts([FromODataUri] Guid key, ODataActionParameters parameters)
{
//read parameter from ODataActionParameters
var createProducts = parameters["Value"] as CreateProductsDTO;
//Process information
}
对此的请求如下所示:
Post: ~odata/Company(1)/AddProducts
body:
{ "Value" : {
"Products" :
[{"Name":"Product1"},{"Name":"Product2"}]
}
}
希望这会有所帮助。 问候, 米哈伊