/// <summary> /// Creates the column list. /// </summary> /// <param name="table">The table.</param> /// <param name="classDecl">The class decl.</param> protected virtual void CreateColumnList(TableSchema table, ClassDeclaration classDecl) { ClassDeclaration cols = new ClassDeclaration(classDecl.Name + "Columns"); var columns = table.Columns .GroupBy(c => { return c.Name; }) .Select(g => { return g.ElementAt(0); }); foreach (ColumnSchema column in columns) { string columnName = column.IsPrimaryKey ? "ID" : column.Name; FieldDeclaration field = new FieldDeclaration(columnName, typeof(string)) .IsPublic() .InitializeTo("\"" + columnName + "\""); field.AddComment("This column is of type {0}{1}({2} in .NET) and can{3} be null.", column.SqlType.ToString().ToLower(), column.Length > 0 ? String.Format("({0})", column.Length) : "", column.DataType.Name, column.Nullable ? "" : "NOT"); cols.AddField(field); } classDecl.AddClass(cols); FieldDeclaration columnsField = new FieldDeclaration("_columns", new CodeDomTypeReference(cols.Name)).IsStatic(); columnsField.AddInitializer(new CodeDomTypeReference(cols.Name)); PropertyDeclaration columnsProperty = new PropertyDeclaration("Columns", columnsField, new CodeDomTypeReference(cols.Name)) .IsStatic().IsReadOnly(); columnsProperty.AddComment("Gets an instance of the {0} class which contains all of the column names for {1}.", cols.Name, classDecl.Name); classDecl.AddProperty(columnsProperty); }