private void WriteSingleReadData(string resultClassName, DatabaseResultSet result) { //single result set using (_cb.BeginNest("private static void ReadData(IDataReader rdr, ICollection<" + resultClassName + "> result)")) { using (_cb.BeginNest("while (rdr.Read())")) { _cb.AppendLine("var record = new " + resultClassName + "();"); for (int index = 0; index < result.Columns.Count; index++) { var column = result.Columns[index]; var name = column.NetName ?? NameFixer.ToPascalCase(column.Name); var dt = column.DataType; var dataType = dt != null ? dt.NetCodeName(column) : column.DbDataType; if (!string.Equals(dataType, "String", StringComparison.OrdinalIgnoreCase) && !dataType.EndsWith("[]", StringComparison.OrdinalIgnoreCase)) { dataType += "?"; //nullable } //manage DbNull _cb.AppendLine("record." + name + " = (" + dataType + ")FixNull(rdr[" + index + "]);"); } _cb.AppendLine("result.Add(record);"); } } }
private void WriteProperties(DatabaseResultSet result) { foreach (var column in result.Columns) { if (string.IsNullOrEmpty(column.NetName)) { column.NetName = NameFixer.ToPascalCase(column.Name); } var dt = column.DataType; var dataType = dt != null ? dt.NetCodeName(column) : TranslateDataTypeToCSharp(column.DbDataType); if (!string.Equals(dataType, "String", StringComparison.OrdinalIgnoreCase) && !dataType.EndsWith("[]", StringComparison.OrdinalIgnoreCase)) { dataType += "?"; //nullable } _cb.AppendAutomaticProperty(dataType, column.NetName); } }
public void ProcedureTest() { var schema = PrepareModel(); var procedure = new DatabaseStoredProcedure { Name = "SelectCategory" }; var argument = new DatabaseArgument { Name = "p1", DatabaseDataType = "VARCHAR", Length = 10, DataType = DataTypeConverter.FindDataType("VARCHAR", schema.DataTypes, SqlType.SqlServer, null), In = true, }; procedure.Arguments.Add(argument); var rs = new DatabaseResultSet(); var resultColumn = new DatabaseColumn { Name = "Output", DbDataType = "VARCHAR" }; DataTypeConverter.AddDataType(resultColumn); rs.Columns.Add(resultColumn); procedure.ResultSets.Add(rs); schema.StoredProcedures.Add(procedure); var directory = TestHelper.CreateDirectory("MySprocTest"); const string @namespace = "MySprocTest"; var settings = new CodeWriterSettings { Namespace = @namespace, CodeTarget = CodeTarget.Poco, WriteStoredProcedures = true }; var target = new CodeWriter(schema, settings); target.Execute(directory); var procedures = directory.GetDirectories("Procedures").FirstOrDefault(); if (procedures == null) Assert.Fail("Could not find Procedures subdirectory"); var files = procedures.GetFiles("*.cs"); var products = files.FirstOrDefault(f => f.Name == "SelectCategory.cs"); Assert.IsNotNull(products, "Should have written SelectCategory class for SelectCategory procedure"); var category = files.FirstOrDefault(f => f.Name == "SelectCategoryResult.cs"); Assert.IsNotNull(category, "Should have written SelectCategoryResult class to the result of the sproc"); }
private static void UpdateProcedure(DatabaseStoredProcedure procedure, DataSet resultSet) { foreach (DataTable table in resultSet.Tables) { var result = new DatabaseResultSet(); procedure.ResultSets.Add(result); foreach (DataColumn column in table.Columns) { var dbColumn = new DatabaseColumn(); dbColumn.Name = column.ColumnName; dbColumn.DbDataType = column.DataType.Name; dbColumn.Length = column.MaxLength; dbColumn.Nullable = column.AllowDBNull; result.Columns.Add(dbColumn); } } }