EF Core отношение многие ко многим и вызовы HTTP - PullRequest
0 голосов
/ 12 октября 2018

В настоящее время у меня есть 2 класса

public class Product 
{
        public int ProductID { get; set; }
        public string Name { get; set; }
        public double Price { get; set; }
        public double Height {get ; set; }
        public double Width {get ; set; }
        public double Depth {get ; set; }
        public ICollection<Part> Parts { get; set; }

}

и

public class Part
    {
            public int PartID { get; set; }
            public string Name { get; set; }
            public double Price { get; set; }
            public double Height {get ; set; }
            public double Width {get ; set; }
            public double Depth {get ; set; }
            public ICollection<Product> Products { get; set; }
    }

С отношением многих ко многим, поскольку продукт может состоять из нескольких частей, а часть может использоваться во многихproducts.

Я прочитал, что EF Core по-прежнему не обрабатывает это отношение автоматически, поэтому у меня будет эта присоединяющаяся сущность:

public class ProductPart
{
            public int ProductID { get; set; }
            public Product Product { get; set; }
            public int PartID { get; set; }
            public Part Part { get; set; }
}

Мой вопрос: при попытке ответить на следующие вызовыAPI,

api/Product/{id}/Parts //Parts used in Product with {id}
api/Product/{id}/PartsIn //Products in which Part with {id} is used

мне нужно написать ProductPartDTO и вызвать его из контроллера продукта или как именно я обработать эти вызовы?

1 Ответ

0 голосов
/ 12 октября 2018

Я обрабатываю это в DbContext OnModelCreating, используя таблицу соединений.

protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Product>()
                .HasMany(e => e.Parts)
                .WithMany(e => e.Products)
                .Map(m => m.ToTable("ProductParts").MapLeftKey("PartID").MapRightKey("ProductID"));
}

Стоит отметить, что вы упоминаете HTTP-вызовы. Если при использовании JSON у сериализатора JSON возникнут проблемы с возвратом этих данных из-за самоссылающихся объектов.Вам нужно заполнить DTO (объекты передачи данных), которые не ссылаются друг на друга, когда вы возвращаете свои результаты.

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