public StringBuilder BuildSqlScript(Dictionary <string, int> entitiesToCreate) { try { foreach (var entityToCreate in entitiesToCreate) { EntityQueue.Enqueue(entityToCreate.Key); } int enqueueCounter = 0; while (EntityQueue.Count > 0) { string entityName = EntityQueue.Dequeue(); int count = entitiesToCreate[entityName]; using (EntityModel originEntity = GetEmptyEntity(entityName)) { for (int i = 0; i < count; i++) { var entity = originEntity.Copy(); if (!SetAllValues(entity) && enqueueCounter <= EntityQueue.Count) { EntityQueue.Enqueue(entityName); enqueueCounter++; break; } else { var sqlExpression = CreateEntitySql(entity); CreatedEntities.Add(entity); sqlBuilder.Append(sqlExpression); sqlBuilder.Append(Environment.NewLine); if (i == count - 1) { enqueueCounter = 0; } } } } } return(sqlBuilder.Append(sqlEndPart)); } catch (Exception ex) { throw new Exception(ex.Message); } }