object is susResponse type, make it... generic$$ProductDto[JsonPropertyName]$id$id$idIdProductIdProductIdProductId$ref.Include() public async Task<IEnumerable<ProductDto>> GetProducts()
{
var productList = await _db.Products
.Include(x => x.LabelProducts)
.Include(x => x.Colours)
.Include(x => x.Rating)
.ToListAsync();
return _mapper.Map<List<ProductDto>>(productList);
} public class ProductDto
{
public int ProductId { get; set; }
public string Name { get; set; }
public double Price { get; set; }
public string Description { get; set; }
public string CategoryName { get; set; }
public string ImageUrl { get; set; }
public string HoverImageUrl { get; set; }
public ICollection<LabelProductDto> LabelProducts { get; set; }
public RatingDto Rating { get; set; }
public ICollection<Colour> Colours { get; set; }
} [HttpGet]
public async Task<object> Get()
{
try
{
IEnumerable<ProductDto> productDtos = await _productRepository.GetProducts();
_response.Result = productDtos;
}
catch (Exception ex)
{
_response.IsSuccess = false;
_response.ErrorMessages
= new List<string>() { ex.ToString() };
}
return _response;
} public class ResponseDto
{
public bool IsSuccess { get; set; } = true;
public object Result { get; set; }
public string DisplayMessage { get; set; } = "";
public List<string> ErrorMessages { get; set; }
} public class ResponseDto<T>
{
public bool IsSuccess { get; set; } = true;
public T Result { get; set; }
public string DisplayMessage { get; set; } = "";
public List<string> ErrorMessages { get; set; }
} modelBuilder.Entity<Colour>()
.HasOne(c => c.Product)
.WithMany(p => p.Colours)
.HasForeignKey(c => c.ProductId);
modelBuilder.Entity<LabelProduct>().HasData(new LabelProduct
{
LabelProductId = 1, LabelId = 1, ProductId = 1
});
modelBuilder.Entity<Product>().HasData(new Product
{
ProductId = 1,
Name = "Green Dress For Woman",
Price = 15,
Description = "Praesent scelerisque, mi sed ultrices condimentum, lacus ipsum viverra massa, in lobortis sapien eros in arcu. Quisque vel lacus ac magna vehicula sagittis ut non lacus.<br/>Sed volutpat tellus lorem, lacinia tincidunt tellus varius nec. Vestibulum arcu turpis, facilisis sed ligula ac, maximus malesuada neque. Phasellus commodo cursus pretium.",
ImageUrl = "samosa.jpg",
CategoryName = "Appetizer",
HoverImageUrl = ""
});
modelBuilder.Entity<Rating>().HasData(new Rating
{
Id = 1,
Rate = 3.3,
Count = 100,
ProductId = 1
});
modelBuilder.Entity<Label>().HasData(new Label
{
Id = 1,
Name = "Trending"
});
modelBuilder.Entity<Colour>().HasData(new Colour
{
Id = 1,
Img = "",
Name = "green",
Quantity = 3,
ProductId = 1
});
modelBuilder.Entity<Colour>().HasData(new Colour
{
Id = 2,
Img = "",
Name = "red",
Quantity = 2,
ProductId = 1
});{
"$id": "1",
"isSuccess": true,
"result": {
"$id": "2",
"$values": [
{
"$id": "3",
"productId": 1,
"name": "Green Dress For Woman",
"price": 15,
"description": "Praesent scelerisque, mi sed ultrices condimentum, lacus ipsum viverra massa, in lobortis sapien eros in arcu. Quisque vel lacus ac magna vehicula sagittis ut non lacus.<br/>Sed volutpat tellus lorem, lacinia tincidunt tellus varius nec. Vestibulum arcu turpis, facilisis sed ligula ac, maximus malesuada neque. Phasellus commodo cursus pretium.",
"categoryName": "Appetizer",
"imageUrl": "samosa.jpg",
"hoverImageUrl": "",
"labelProducts": {
"$id": "4",
"$values": [
{
"$id": "5",
"labelProductId": 1,
"productId": 1,
"labelId": 1,
"product": {
"$ref": "3"
},
"label": null
}
]
},
"rating": {
"$id": "6",
"id": 1,
"rate": 3.3,
"count": 100,
"productId": 1,
"product": {
"$ref": "3"
}
},
"colours": {
"$id": "7",
"$values": [
{
"$id": "8",
"id": 1,
"name": "green",
"img": "",
"quantity": 3,
"productId": 1,
"product": {
"$id": "9",
"productId": 1,
"name": "Green Dress For Woman",
"price": 15,
"description": "Praesent scelerisque, mi sed ultrices condimentum, lacus ipsum viverra massa, in lobortis sapien eros in arcu. Quisque vel lacus ac magna vehicula sagittis ut non lacus.<br/>Sed volutpat tellus lorem, lacinia tincidunt tellus varius nec. Vestibulum arcu turpis, facilisis sed ligula ac, maximus malesuada neque. Phasellus commodo cursus pretium.",
"categoryName": "Appetizer",
"imageUrl": "samosa.jpg",
"hoverImageUrl": "",
"labelProducts": {
"$id": "10",
"$values": [
{
"$id": "11",
"labelProductId": 1,
"productId": 1,
"labelId": 1,
"product": {
"$ref": "9"
},
"label": null
}
]
},
"rating": {
"$id": "12",
"id": 1,
"rate": 3.3,
"count": 100,
"productId": 1,
"product": {
"$ref": "9"
}
},
"colours": {
"$id": "13",
"$values": [
{
"$ref": "8"
},
{
"$id": "14",
"id": 2,
"name": "red",
"img": "",
"quantity": 2,
"productId": 1,
"product": {
"$ref": "9"
}
}
]
}
}
},
{
"$ref": "14"
}
]
}
}
]
},
"displayMessage": "",
"errorMessages": null
}