Ваша проблема не указана c для обслуживания Fabri c, а C# в целом. Вы пытаетесь установить переменную со значением другого типа.
В этой строке:
IEnumerable<Product> allProducts = await _service.GetAllProductsAsync();
Вы получаете коллекцию элементов типа ECommerce.ProductCatalog.Model.Product
. В этом классе вы добавили свойство Suppliers
(которое должно быть Supplier
, поскольку оно не является коллекцией) типа ECommerce.ProductCatalog.Model.Supplier
.
Теперь со следующей строкой:
return allProducts.Select(p => new ApiProduct
{
Id = p.Id,
Name = p.Name,
Description = p.Description,
Price = p.Price,
IsAvailable = p.Availability > 0,
suppliers = p.Suppliers
});
вы преобразуете эту коллекцию в коллекцию нового типа ECommerce.API.Model.Product
, к которой вы добавили новое свойство Suppliers
типа ECommerce.API.Model.Supplier
, но вы установили для этого свойства исходное значение без его преобразования. Итак, преобразуйте исходное свойство Suppliers
в правильный тип:
return allProducts.Select(p => new ApiProduct
{
Id = p.Id,
Name = p.Name,
Description = p.Description,
Price = p.Price,
IsAvailable = p.Availability > 0,
suppliers = new ApiSupplier
{
Id = p.Suppliers.Id,
Name = p.Suppliers.Name
}
});
Обновление: сделайте коллекцию Suppliers
Сделайте вашу собственность Suppliers коллекцией как в вашей модели данных, так и в вашей модели Api:
public Collection<ApiSupplier> suppliers { get; set; }
Затем преобразуйте коллекцию соответственно:
return allProducts.Select(p => new ApiProduct
{
Id = p.Id,
Name = p.Name,
Description = p.Description,
Price = p.Price,
IsAvailable = p.Availability > 0,
suppliers = p.Suppliers.Select(s => new ApiSupplier
{
Id = s.Id,
Name = s.Name
}
});