【发布时间】:2016-03-03 20:59:49
【问题描述】:
在使用 EntityFramework 的 WebAPI POST 控制器中,我想添加一些基于 ICollection 的新记录。
所以,我有一个产品模型。该模型具有对模型颜色的引用 (ICollection)。 我有一个 POST 控制器,它应该能够添加一种或多种颜色,绑定到产品。
我有以下代码:
public async Task<IHttpActionResult> PostProduct(string InternalReferenceId, int SupplierId, Colors colors)
{
Product dbProduct = db.Products.FirstOrDefault(s => s.InternalReferenceId == InternalReferenceId && s.SupplierId == SupplierId);
if (dbProduct != null)
{
// iCollection
dbProduct.Colors = colors;
await db.SaveChangesAsync();
}
else
{
return NotFound();
}
return Ok();
}
JSON 可能如下所示;
{
"color": "white"
},
{
"color": "black"
},
{
"color": "green"
}
关于我如何将dbProduct.Colors 分配给颜色的内容/模型(即 JSON)的任何想法?
【问题讨论】:
-
dbProduct.Colors 的类型是什么?当然,这应该只是您的 API 类型和 EF 类型之间的映射练习?而且您的颜色参数看起来应该是一个数组/集合。即 Color[] 颜色...
-
dbProduct.Colors 是一个 iCollection
。这是模型中的定义: public virtual ICollection Colors { get;放; JSON 只是一个简单的例子。我拥有的价值不仅仅是“颜色”。 -
这是VS显示的错误:Cannot convert source type 'Models.Color' to target type 'System.Collections.Generic.ICollection
标签: asp.net-web-api asp.net-web-api2