EF Core 2.2 - не работает вставка нового объекта со ссылкой на существующий
От: LandWarrior  
Дата: 26.07.20 23:15
Оценка:
Вот мои POC объекты:

[Table]
    public class Product
    {
        [Key]
        public int Id { get; set; }
        public string Name { get; set; }

        public List<CategoryProduct> CategoryProducts { get; set; }
    }

    public class CategoryProduct
    {
        public int CategoryId { get; set; }
        public int ProductId { get; set; }
        
        public Category Category { get; set; }
        public Product Product { get; set; }
    }


    [Table]
    public class Category
    {
        [Key]
        public int Id { get; set; }
        public string Name { get; set; }

        public List<CategoryProduct> CategoryProducts { get; set; }
    }


Вот код вставки:


        public async Task CreateProduct(Product dto)
        {
                await ctx.Products.AddAsync(dto);
                await ctx.SaveChangesAsync();
        }



В вещ передаю объект Product , сделаный из такого JSON :

{
            "id": 0,
            "name": "Gräff Stettin",
            "categoryProducts": [{
                    "categoryId": 1,
                    "productId": 1,
                    "category": {
                        "id": 1,
                        "name": "Drinks"
                    }
                }, {
                    "categoryId": 2,
                    "productId": 1,
                    "category": {
                        "id": 2,
                        "name": "Alcohol"
                    }
                }
            ]
        }


И что вижу при трассировке запросов — что он с какого-то перепугу лепит вставку существующей Category:
INSERT INTO "Category" ("Id", "Name")
VALUES (@p0, @p1);



Как мне сделать так, чтобы вставки категории не было при ее существовании с таким categoryId?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.