Есть ли способ включить одну дочернюю таблицу при групповой вставке из контекста 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));