Как предотвратить создание отношений с помощью EntityFramework Core - PullRequest
0 голосов
/ 04 мая 2020

Я делаю школьный проект, который представляет собой магазин.

Я создал класс продукта:

        public Guid Id { get; set; }
        public string Name { get; set; }
        public decimal Price { get; set; }
        public string Description { get; set; }
        public string PhotoUrl { get; set; }
        public int Quantity { get; set; }

и класс заказа:

        public Guid Id { get; set; }
        public List<Product> Products { get; set; }
        public decimal TotalPrice { get; set; }
        //address
        public string Street { get; set; }
        public string HouseNumber { get; set; }
        public string PostCode { get; set; }
        public string City { get; set; }
        public Order()
        {
            Products = new List<Product>();
        }

Как вы видите в Order.cs, есть список Продуктов, но структура сущностей всегда устанавливает связь между моим продуктом и заказом, но я просто хочу добавить Продукт в этот список без связи. В ответ я хочу получить что-то вроде этого

{
"id" :"someID",
"products": [
{
first product
},
{
second product
}]
}

et c. Как я могу предотвратить создание ef отношений и сделать простые списки? Или как я могу связать много товаров со многими заказами?

Ответы [ 2 ]

0 голосов
/ 04 мая 2020

Либо я что-то упускаю, либо вы пытаетесь сделать что-то, что не имеет особого смысла. Вы говорите, что нет никакого отношения - но вы хотите сохранить и Заказ, и его Продукты в базу данных? Это означает, что существует отношение IS (вида 1: N), и EF правильно его создает. Это не может работать без него.

Вы не включили ожидаемый полный вывод, только часть заказа с заполнителями first_product и second_product. Если заполнители выглядят как ваш класс Product, просто позвольте EF создать отношение, и все готово. Если вы хотите, чтобы они выглядели по-разному в JSON (пропустите некоторые свойства, например), вы все равно должны позволить EF создать отношение, а затем записать преобразование из ваших классов Entity (Product, Order) в классы DTO (ProductDTO и OrderDTO, которые имеет List<ProductDto>). В любом случае, это хорошая практика, даже если Entity и DTO соответствуют 1: 1, в реальном проекте это редко остается таким долго.

0 голосов
/ 04 мая 2020

Вы можете добавить атрибут NotMapped к свойству:

...  
[NotMapped]
public List<Product> Products { get; set; }
...

Вам потребуется импортировать System.ComponentModel.DataAnnotations

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...