Есть ли способ включить одну дочернюю таблицу при групповой вставке из контекста EF?

У нас есть огромная модель контекста EF. Я хочу массово вставить данные из одной родительской таблицы и только ее дочерней таблицы. BulkSaveChanges занимает слишком много времени, и я играю с BulkInsert, но когда я установил options.IncludeGraph = true тогда это займет еще больше времени. Есть ли способ запретить Dapper искать все связанные объекты и вставлять данные только из таблицы Parents и из Child?

1 ответ

Решение

Можете ли вы позвонить в два раза больше, вкладыш? Один для родителей, один для их детей

context.BulkInsert(parents);
context.BulkInsert(parents.SelectMany(x => x.Childs));

После того, как родители были вставлены, у childs все еще есть ParentId = 0

Мы надеемся вскоре улучшить эту часть, но в этот момент вам нужно назначить ParentId вашему ребенку.

Например:

context.BulkInsert(parents);
parents.ForEach(x => x.Childs.ForEach(y => y.ParentID = x.ID));
context.BulkInsert(parents.SelectMany(x => x.Childs));
Другие вопросы по тегам