
Товар может иметь несколько отзывов. Отзыв сделан одним клиентом.
Таким образом, в обзоре есть свойства Customer и Product.
Product.cs
namespace DatabaseProject.Models
{
public class Product
{
public Product()
{
Reviews = new List < Review >();
}
public int Id { get; set; }
public Catagory Catagory { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string Specification { get; set; }
public List<Review> Reviews { get; set; }
}
}
Review.cs
namespace DatabaseProject.Models
{
public class Review
{
public int Id { get; set; }
public string Text { get; set; }
public int Stars { get; set; }
[Required]
public Product Product { get; set; }
[Required]
public Customer Customer { get; set; }
}
}
Customer.cs
namespace DatabaseProject.Models
{
public class Customer
{
public Customer()
{
Addresses = new List<Address>();
Reviews = new List<Review>();
}
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public List<Address> Addresses { get; set; }
public List<Review> Reviews { get; set; }
}
}
Способ добавления нового отзыва.
Я добавляю его в список отзывов в таблице товаров.
public bool AddReview(int id, Review review)
{
using (var context = new ShopDbContext())
{
Product oldProduct = context.Products.Find(id);
if (oldProduct == null)
{
return false;
}
oldProduct.Reviews.Add(review);
context.SaveChanges();
return true;
}
}
Добавление нового отзыва
Здесь, поскольку в продукт добавлен отзыв. Отзывы Мне не нужно было передавать свойство продукта.
Но я должен был передать клиенту. Каким-то образом это создает нового клиента, а не ссылается на существующего клиента.
productService.AddReview(1,
new Review
{
Customer = customerService.Get(1),
Stars = 2,
Text = "It's a good camera",
});
Это приводит к дублированию записи в таблице «Клиенты».
