通过iCollection模型在WebAPI中添加记录?
问题描述:
在WebAPI POST控制器中,使用EntityFramework,我想添加一些基于ICollection的新记录。通过iCollection模型在WebAPI中添加记录?
所以,我有一个产品的模型。此模型具有对模型颜色的参考(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)的想法?
答
您正试图将一个项目(Models.Color
)分配给一个集合(ICollection<Models.Color>
)。因此,您需要将API更改为接受Models.Color
的集合:
public async Task<IHttpActionResult> PostProduct(string InternalReferenceId, int SupplierId, ICollection<Color> colors)
dbProduct.Colors的类型是什么?当然,这应该只是您的API类型和EF类型之间的映射练习?而你的颜色参数看起来应该是一个数组/集合。即颜色[]颜色... – strickt01
dbProduct.Colors是一个iCollection。这是模型中的定义:public virtual ICollection Colors {get;组; } JSON只是一个简单的例子。我比“颜色”拥有更多的价值。 –
brother
这是VS显示的错误:无法将源类型'Models.Color'转换为目标类型'System.Collections.Generic.ICollection –
brother