Я пытаюсь создать веб-сервисы для корзины покупок с mongodb
и dotnet core
web api. В моей корзине есть информация о товаре. Продукт должен быть из нескольких массивов или объектов, и я попытался с одним решением, но у меня есть эта ошибка:
Произошло необработанное исключение при обработке запроса.
InvalidOperationException: невозможно разрешить службу для типа «CartService» при попытке активировать «CartsController».
Это выглядит коллекция корзины:
{
"_id" : ObjectId("5cab18a057ab66f2536feeb9"),
"Status" : "Inactive",
"Product" : [
{
"_id" : ObjectId("5ca9b27dbec46268305ce427"),
"Quantity" : 1.0,
"Name" : "Samsung",
"Price" : 1000.0
},
{
"_id" : ObjectId("5ca9b27dbec46268305ce427"),
"Quantity" : 2.0,
"Name" : "Samsung",
"Price" : 9999.0
}
],
"modified_on" : "5/4/2019"
}
Это модель класса:
public class Cart
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }
[BsonElement("Status")]
public string Status { get; set; }
[BsonElement("Product")]
public Product Product { get; set; }
[BsonElement("modified_on")]
public DateTime modified_on { get; set; }
}
Корзина:
public class CartService
{
private readonly IMongoCollection<Cart> _carts;
public CartService(IConfiguration config)
{
var client = new MongoClient(config.GetConnectionString("WebShopDb"));
var database = client.GetDatabase("WebShopDb");
_carts = database.GetCollection<Cart>("Carts");
}
public List<Cart> Get()
{
return _carts.Find(cart => true).ToList();
}
public Cart Get(string id)
{
return _carts.Find<Cart>(cart => cart.Id == id).FirstOrDefault();
}
public Cart Create(Cart cart)
{
_carts.InsertOne(cart);
return cart;
}
public void Update(string id, Cart cartIn)
{
_carts.ReplaceOne(cart => cart.Id == id, cartIn);
}
public void Remove(Cart cartIn)
{
_carts.DeleteOne(cart => cart.Id == cartIn.Id);
}
public void Remove(string id)
{
_carts.DeleteOne(cart => cart.Id == id);
}
}
Контроллер корзины:
[Route("api/[controller]")]
[ApiController]
public class CartsController : ControllerBase
{
private readonly CartService _cartService;
public CartsController(CartService cartService)
{
_cartService = cartService;
}
[HttpGet]
public ActionResult<List<Cart>> Get()
{
return _cartService.Get();
}
[HttpGet("{id:length(24)}", Name = "GetCart")]
public ActionResult<Cart> Get(string id)
{
var cart = _cartService.Get(id);
if (cart == null)
{
return NotFound();
}
return cart;
}
[HttpPost]
public ActionResult<Cart> Create(Cart cart)
{
_cartService.Create(cart);
return CreatedAtRoute("GetCart", new { id = cart.Id.ToString() }, cart);
}
[HttpPut("{id:length(24)}")]
public IActionResult Update(string id, Cart cartIn)
{
var cart = _cartService.Get(id);
if (cart == null)
{
return NotFound();
}
_cartService.Update(id, cartIn);
return NoContent();
}
[HttpDelete("{id:length(24)}")]
public IActionResult Delete(string id)
{
var cart = _cartService.Get(id);
if (cart == null)
{
return NotFound();
}
_cartService.Remove(cart.Id);
return NoContent();
}
}