public void Create(coreModel.CatalogProduct[] items) { var pkMap = new PrimaryKeyResolvingMap(); using (var repository = _catalogRepositoryFactory()) { foreach (var item in items) { var dbItem = item.ToDataModel(pkMap); repository.Add(dbItem); if (item.Variations != null) { foreach (var variation in item.Variations) { variation.MainProductId = dbItem.Id; variation.CatalogId = dbItem.CatalogId; var dbVariation = variation.ToDataModel(pkMap); repository.Add(dbVariation); } } } CommitChanges(repository); pkMap.ResolvePrimaryKeys(); } //Update SEO var itemsWithVariations = items.Concat(items.Where(x => x.Variations != null).SelectMany(x => x.Variations)).ToArray(); _commerceService.UpsertSeoForObjects(itemsWithVariations); }