Копирование данных нескольких таблиц со связями с использованием ядра EF - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть семь таблиц, которые содержат сотни строк связанных данных.Эти таблицы представляют собой довольно сложный инструмент цитирования, который добавляет материалы, затраты и т. Д.

Возможно ли использовать EF Core и несколько строк кода для загрузки всех этих объектов, а затем записать их обратно как новыено создание новых идентификаторов на пути и правильное связывание всего друг с другом, так что я получаю полные копии всех данных.Затем я могу изменить CompanyID в таблице заголовков и вуаля, у компании есть полная копия шаблонов, которые они теперь могут настраивать сами.

Я собираюсь написать процедуру для загрузки объектов по одному, циклповерх них, сохраняйте строки один за другим и т.д., храните идентификаторы, бла-бла-бла.Я счастлив написать эту процедуру, потому что не вижу автоматического способа сделать это.

1 Ответ

0 голосов
/ 27 февраля 2019

Единственный способ, которым я могу придумать, сделать это с EF Core.Поскольку он не поддерживает вмешательство в первичные ключи, вы можете попробовать что-то вроде этого, если вы не хотите создавать процедуру, но я вижу способ выполнить каскадное обновление первичных ключей.Этот вид кода позволит вам изменять первичные ключи с помощью пользовательских идентификаторов в зависимости от ваших потребностей.Вам все равно понадобятся петли.Так что да, вы сначала обновите основную таблицу, а под ней таблицы, которые зависят от нее.

foreach(var row in your_entity){
  your_context.your_new_entity.AddObject(row);
  your_context.SaveChanges();
  row.Id = your_id;
  for(var row2 in your_depending_entity){
    row2.foreignkey = your_id
    .... // and so on 
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...