Asp.net web api 是否通过iCollection模型在WebAPI中添加记录?
在使用EntityFramework的WebAPI POST控制器中,我想基于ICollection添加一些新记录 所以,我有一个产品模型。此模型具有对模型颜色的引用(ICollection)。 我有一个后控制器,应该能够添加一个或多个颜色,绑定到产品 我有以下代码:Asp.net web api 是否通过iCollection模型在WebAPI中添加记录?,asp.net-web-api,asp.net-web-api2,Asp.net Web Api,Asp.net Web Api2,在使用EntityFramework的WebAPI POST控制器中,我想基于ICollection添加一些新记录 所以,我有一个产品模型。此模型具有对模型颜色的引用(ICollection)。 我有一个后控制器,应该能够添加一个或多个颜色,绑定到产品 我有以下代码: public async Task<IHttpActionResult> PostProduct(string InternalReferenceId, int SupplierId, Colors colors)
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();
}
关于如何将
dbProduct.Colors
分配给颜色的内容/模型(即JSON)有什么想法吗?您正在尝试将单个项(Models.Color
)分配给集合(ICollection
)。因此,您需要更改API以接受模型的集合。Color
:
public async Task<IHttpActionResult> PostProduct(string InternalReferenceId, int SupplierId, ICollection<Color> colors)
public async Task PostProduct(字符串InternalReferenceId、int SupplierId、ICollection颜色)
dbProduct.Color的类型是什么?当然,这应该只是API类型和EF类型之间的映射练习?您的colors参数看起来应该是一个数组/集合。i、 e.Color[]colors…dbProduct.colors是一个iCollection。这是模型中的定义:publicvirtualicollection Colors{get;set;}JSON只是一个简单的例子。我持有的值不止是“颜色”。这是VS显示的错误:无法将源类型“Models.color”转换为目标类型“System.Collections.Generic.ICollection”,这给了我以下错误:无法将类型IEnumerable转换为ICollection?哦,应该是ICollection。我已相应地修改了答案。
public async Task<IHttpActionResult> PostProduct(string InternalReferenceId, int SupplierId, ICollection<Color> colors)