Как сделать upsert с Entity Framework Core с ключами, сгенерированными извне - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть объекты, взятые из внешней системы, сгенерированные там идентификаторы. Мне нужно хранить их с помощью ef core (3.1.2+). Как я могу это сделать?

Единственные способы, которые я пока вижу, - это

  1. Первое извлечение сущности из БД. Если не там, то сохранение нового. В противном случае получите его, скопируйте значения из моей сущности и сохраните. Повторите вручную для всех сущностей со своими дочерними элементами (весь график).
  2. Используйте FlexLabs.Upsert для каждой сущности со своими дочерними элементами.

Я пытался работать с EF Core ChangeTracker.TrackGraph, но нет удачи. Тем более, что у меня могут быть такие объекты, как ниже. С вложенными сущностями, некоторые сущности повторно используются в нескольких сущностях (например, цвет), некоторые сущности сохраняются уже в БД, некоторые нет (не может сказать).

homes:[
    {
        id:"A",
        color:{
            id:"1",
            name:"red"
        },
        colorId:1,
        doorsNum:3,
        windows:[
            {
                id:17,
                size:"big"
            },
            {
                id:18,
                size:"small"
            }
        ]
    },
    {
        id:"B",
        color:{
            id:"1",
            name:"red"
        },
        colorId:1,
        doorsNum:7
    },
]
...