Okay, here it is ... I have totally refactored the entire set of class, field, property, variable, et-al. naming functions. This is a very, very large patch (~450KB) that touches a huge number of files. This patch does a few things (all to svn rev 563):
It eliminates the multitude of class name formatting functions that were accepting strings as input parameters. It centralizes all the class name formatting functionality and uses recursion to properly reuse formatting. It only exposes signatures that take in Schema objects, so you get a much more consistent result. For example:
GetStructName(SourceTable.Name) becomes GetClassName(SourceTable, ClassNameFormat.Struct)
GetAbstractClassName(SourceTable.Name) becomes GetClassName(SourceTable, ClassNameFormat.Abstract)
There are also two new properties on the template. One allows you to specify one or more table suffixes to remove from the table names (just like the table prefix, but from the other end of the name). The other allows you to specify if you are using an alias file, a mapping.config file or nothing. This way, people that have an alias file and a mapping file can be sure they know where their information is coming from. In the event that you specify alias or mapping files, if it doesn't find a match for a specific item (entity or column), it will recursivly call itself and create a name as if you were not using any file at all (just for that item). This property defaults to None, so if you are used to using a mapping.config or alias file, be sure to set this property explicitly before you run your generation.
On the topic of mapping.config files: I added two new attributes (PropertyName and FieldName) to both Table and View nodes. These are created automatically if you are generating from scratch, but if you are using an existing mapping.config file, you'll need to add these attributes yourself (or generate a new mapping.config).
This patch currently generates compiling code that works with my DB and with Northwind. I have no need for and have not tested the web application or admin projects. They compile, that's all I can say.
This patch generates code properly from scratch. I do not promise that it will generate code that is compatible with create-once files generated by previous versions of NetTiers. If you find places where this is true (that it doesn't work), please try to post specifics here and I will investigate as I am able. Please don't bother posting if you can't be specific about the discrepency, the template in which it's a problem, etc. As Jerry McGuire said, "Help me, help you."
Finally, a lot of the comment blocks are wrong. I did a lot of copy-paste work on some of them and didn't keep up with the summary and param tags. I need to clean that up at some point.
Please take a look, give it a run, let me know what you think. NT Team, please do the same. Let me know what, if anything, I need to address in order to accomplish getting this committed to the trunk.
Tony