public async Task InnerInsert(IEnumerable <TSource> source, IContextAdapter contextAdapter) { if (source == null) { return; } var extractor = _extractor.Compile(); var s = source.Where(o => extractor(o) != null).ToArray(); if (!s.Any()) { return; } var copy = GetCopyPk(contextAdapter); foreach (var parent in s) { foreach (var child in extractor(parent)) { copy.Invoke(parent, child); } } await contextAdapter.BulkInsertCascade(s.SelectMany(extractor).Distinct().ToArray(), _cascades); }
public async Task InnerInsert(IEnumerable <TSource> source, IContextAdapter contextAdapter) { if (source == null) { return; } var extractor = _extractor.Compile(); var s = source.Where(o => extractor(o) != null).ToArray(); if (!s.Any()) { return; } var copyPk = GetCopyPk(contextAdapter); var destinations = s.Select(extractor).Distinct().ToArray(); await contextAdapter.BulkInsertCascade(destinations, _cascades); foreach (var destination in s) { copyPk(destination, destination); } }