powered by simpleCommunicator - 2.0.33     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF Core 2.2 - не работает вставка нового объекта со ссылкой на существующий
2 сообщений из 2, страница 1 из 1
EF Core 2.2 - не работает вставка нового объекта со ссылкой на существующий
    #39984249
Landwarrior
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот мои POC объекты:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
[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; }
    }


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


Код: c#
1.
2.
3.
4.
5.
        public async Task CreateProduct(Product dto)
        {
                await ctx.Products.AddAsync(dto);
                await ctx.SaveChangesAsync();
        }




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

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
{
            "id": 0,
            "name": "Gr&#228;ff Stettin",
            "categoryProducts": [{
                    "categoryId": 1,
                    "productId": 1,
                    "category": {
                        "id": 1,
                        "name": "Drinks"
                    }
                }, {
                    "categoryId": 2,
                    "productId": 1,
                    "category": {
                        "id": 2,
                        "name": "Alcohol"
                    }
                }
            ]
        }





И что вижу при трассировке запросов — что он с какого-то перепугу лепит вставку существующей Category:

Код: sql
1.
2.
INSERT INTO "Category" ("Id", "Name")
VALUES (@p0, @p1);






Как мне сделать так, чтобы вставки категории не было при ее существовании с таким categoryId?
...
Рейтинг: 0 / 0
EF Core 2.2 - не работает вставка нового объекта со ссылкой на существующий
    #39984527
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Landwarrior,

Вам надо найти эти категории в контексте.
EF полагает, что вы добавляете новые категории, откуда ему знать, что они уже есть в БД?

Использование записи в EF из JSON работать у вас не будет.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF Core 2.2 - не работает вставка нового объекта со ссылкой на существующий
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]