More on UIMappers and WilsonORMapper
First, I would like to thank Paul Welter for adding XmlComments and an NDoc-generated help file for the WilsonORMapper v2.2.1.0 -- which now supports filter and sortOrder for child relations. Now, here's a few other thoughts about UI Mappers, especially in comparison with O/R Mappers:
Why not attributes? Of course I don't really like using attributes for O/R mappings much either, but there is something fundamentally different about UI mappings that pretty much rule them out. That difference is that while there may only be one way to persist an entity/business class, there are many valid ways to display that same class -- roles, personalization, localization. Of course, any UI Mapper should also let you programmatically assign the UI mappings at runtime, since you may want to store your mappings in a database for the ultimate in personalization.
Did you notice that O/R Mappers map class fields, whereas a UI Mapper should map class properties? An O/R Mapper maps the database fields directly to the underlying business/entity class fields since these values have already been persisted -- they should not be validated yet another time. On the other hand, a UI Mapper should map the user's entries to business/entity class properties since these values should get processed further for validation or other relevant business logic. For example, I have a Password property that hides both the passwordHash and passwordSalt fields.