private static void Validate(DataGenerationInfo info) { var validationErrors = info.GetValidationErrors(); if (!string.IsNullOrEmpty(validationErrors)) { throw new InvalidOperationException("Validation errors on generation models: " + validationErrors); } var ctx = new Dictionary <object, object> { { "info", info }, { "sources", info.Sources } }; foreach (var col in info.Columns) { var columnValidationErrors = col.GetValidationErrors(ctx); if (!string.IsNullOrEmpty(columnValidationErrors)) { throw new InvalidOperationException("Validation errors on generation models: " + columnValidationErrors); } } }
private static void CreateColumns(DataTable dt, DataGenerationInfo info) { foreach (var columnModel in info.Columns) { var dataType = UtilDataGeneration.GetCorrespondingDataType(columnModel.DataType); DataColumn dc = new(columnModel.Name, dataType); dt.Columns.Add(dc); } }
public DataSet Generate(DataGenerationInfo info) { Validate(info); var result = new DataSet(); var dt = result.Tables.Add("table"); CreateColumns(dt, info); GenerateData(dt, info); return(result); }
private void GenerateData(DataTable dt, DataGenerationInfo info) { var generatorList = new Dictionary <ColumnDefinitionType, GeneratorBase>(); for (var i = 0; i < info.RowsToGenerate; i++) { var dr = dt.NewRow(); foreach (var columnModel in info.Columns) { if (!generatorList.ContainsKey(columnModel.ColumnDefinitionType)) { var newGenerator = _generatorFactory.GetInstance(columnModel.ColumnDefinitionType); newGenerator.GenerationInfo = info; generatorList[columnModel.ColumnDefinitionType] = newGenerator; } var generator = generatorList[columnModel.ColumnDefinitionType]; dr[columnModel.Name] = generator.Generate(columnModel); } dt.Rows.Add(dr); } }