示例#1
0
 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);
            }
        }
示例#3
0
        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);
         }
     }
 }