One common business requirement is being able to audit important business changes. This means that of the 20 fields that are enterable on a customer record, we care about tracking 5 of them.
There’ve a been a few threads in the CSLA.NET discussion group about creating audit log and audit entry objects. These are absolutely necessary.
What about creating a custom attribute to assign to fields that need to be audited? Perhaps this attribute could be targeted to a class as well, so all fields would be audited?
Should the auditing records only be created when changes are applied? I think this would require the ability to do a comparison of old/new on every field. That could be a lot of overhead, although the comparison would only be necessary on the audited fields.
Should the auditing be recorded as changes are made and included in the state of the object? This could significantly increase the size of the business object.