Asp.net web api 是否通过iCollection模型在WebAPI中添加记录?

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)

在使用EntityFramework的WebAPI POST控制器中,我想基于ICollection添加一些新记录

所以,我有一个产品模型。此模型具有对模型颜色的引用(ICollection)。 我有一个后控制器,应该能够添加一个或多个颜色,绑定到产品

我有以下代码:

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)