Мне удалось успешно клонировать объект EF, используя сериализацию и десериализацию. Если я установлю EntityKey на ничего, я могу добавить его в контекст. Но когда я пытаюсь сохранить SaveChanges, я получаю сообщение о том, что первичный ключ должен быть уникальным. Это имеет смысл, поскольку у клона тот же ключ. Поэтому мне нужно изменить это заранее.
Но первичный ключ автоматически присваивается БД (SQLite) при вставке, и, поскольку PK не обнуляется, я не могу установить NewEntity.ID = Nothing, что, как я предполагаю, сообщит контексту, что эта сущность должна получить временный ключ, пока вставлено.
Если я установлю NewEntity.ID = 30804328 или какое-то произвольное (неиспользованное) число, оно будет хорошо сохранено в БД. Но я совершенно не склонен запрашивать неиспользуемое значение идентификатора каждый раз, когда хочу клонировать сущность.
Я понял, что контекст будет обрабатывать отдельную сущность как новую, когда она была добавлена в AddObject, и назначать ей временный ключ, чтобы БД могла выполнять присваивание, а затем контекст получал обновления. Разве это не так?
Как мне решить это? Спасибо за любой совет!