/// <summary> /// Upserts the single category. /// </summary> /// <param name="category">The category.</param> /// <param name="categoryToId">The category to identifier.</param> /// <returns>upserted category's id</returns> private int UpsertSingleCategory(AmazonProductCategory category, IDictionary <AmazonProductCategory, int> categoryToId) { using (var connection = GetOpenedSqlConnection2()) { int parentId = -1; if (category.Parent != null) { parentId = UpsertSingleCategory(category.Parent, categoryToId); } AmazonCategory cat = new AmazonCategory { MarketplaceTypeId = AmazonMarketplaceTypeId, ServiceCategoryId = category.CategoryId, Name = category.CategoryName, ParentId = parentId > 0 ? parentId : (int?)null }; var upsertCommand = GetUpsertGenerator(cat) .WithConnection(connection.SqlConnection()) .WithSkipColumns(o => o.Id) .WithOutputColumns(o => o.Id) .WithTableName("MP_EbayAmazonCategory") .WithMatchColumns(o => o.Name) .Verify() .GenerateCommand(); using (var sqlCommand = upsertCommand) { int id = (int)ExecuteScalarAndLog <int>(sqlCommand); categoryToId.Add(category, id); return(id); } } }
private MP_EbayAmazonCategory AddAmazonCategory(IMarketplaceType marketplace, AmazonProductCategory amazonProductCategory, ElapsedTimeInfo elapsedTimeInfo, int mpId) { var cat = new MP_EbayAmazonCategory { CategoryId = amazonProductCategory.CategoryId, Name = amazonProductCategory.CategoryName, Marketplace = _MarketPlaceRepository.Get(marketplace.InternalId), Parent = amazonProductCategory.Parent == null ? null : FindEBayAmazonCategory(marketplace, amazonProductCategory.Parent.CategoryId, elapsedTimeInfo, mpId) ?? AddAmazonCategory(marketplace, amazonProductCategory.Parent, elapsedTimeInfo, mpId) }; AddCategoryToCache(marketplace, cat); ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(elapsedTimeInfo, mpId, ElapsedDataMemberType.StoreDataToDatabase, () => _EbayAmazonCategoryRepository.Save(cat)); return(cat); }