Код Первый: Невозможно создать от 1 до многих отношений.

Покупатель

public class Customer
{
    public Customer()
    {
        Addresses = new List<Address>();
        Reviews = new List<Review>();
        Products = new List<Product>();
    }
    [Key]
    public string Email { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Password { get; set; }
    public Address DefaultAddress { get; set; }
    public int DefaultAddressId { get; set; }
    public List<Address> Addresses { get; set; }
    public List<Review> Reviews { get; set; }
    public List<Product> Products { get; set; }
}

Товар

public class Product
{
    public Product()
    {
        Reviews = new List < Review >();
    }

    public int Id { get; set; }
    public Category Category { get; set; }
    public string Name { get; set; }  
    public string Description { get; set; }
    public string Specification { get; set; }
    public List<Review> Reviews { get; set; }
    public List<Customer> Customers { get; set; }
}

Обзор

public class Review
{
    public int Id { get; set; }
    public string Text { get; set; }
    public int Stars { get; set; }
    [Required] 
    public int ProductId { get; set; }
    [Required]
    public string CustomerId { get; set; }
}

}

Сгенерированная модель

введите описание изображения здесь

Я хочу, чтобы отношения между Review и Customer к 1 ко многим не 0..1 для многих. Каждый обзор должен принадлежать одному клиенту. Я не понимаю, как отношения правильно сопоставлены для Review - Product, но не для клиента.

Всего 1 ответ


Я использовал только модели Customer и Review так как они нужны, как только вы захотите получить ответ. Ниже приведены ваши классы моделей.

public class Customer
{
    public Customer()
    {
        Reviews = new HashSet<Review>();
    }

    [Key]
    public string Email { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Password { get; set; }

    public ICollection<Review> Reviews { get; set; }

}

public class Review
{
    public int Id { get; set; }
    public string Text { get; set; }
    public int Stars { get; set; }
    [Required]
    public int ProductId { get; set; }
    [Required]
    public string CustomerId { get; set; }

    [ForeignKey("CustomerId")]
    public Customer Customer { get; set; }
}

таким образом, у вас могут быть клиенты. Просмотрите коллекцию и внесите ее в список, если вы хотите. Используйте метод Include() в своем запросе linq для ленивой загрузки коллекции отзывов клиентов. для примера:

var customer = dbContext.Customer.Include("Reviews").where(x => x.Email == "john@gmail.com").FirstOrDefault();

Есть идеи?

10000