-Larry
Just add the columns that do not belong to the table to the ExcludeOnInsert or ExcludeOnUpdate properties. By adding the columns that do not necessarily relate to the table you can have your cake and eat it too...so to speak
When parent is marked as deleted and the BOs are saved, the parent is deleted and the database cascades the deletion to the child records. Next the child BO is saved. Since the child records have already been deleted in the database, lnReturn in SqlDataSourceItem.UpdateRow is set to zero. The code following the command execution considers lnReturn < 1 to be a concurrency exception. Eventually DataLayer.GetRowFromServer gets called. The query that gets built uses the data table column names, not the AllFieldsList. It also ignores the "FieldsToExclude..." defined on the BO. The result is that the added fields are included in the query which causes an invalid column message to be displayed when the query is executed. This is also causing an issue when there is a real concurrency violation.
Breaking the parent/child relationship and then first saving the child followed by the parent works since in both cases lnReturn > 0 and the concurrency handling code is never called.
On a related subject I know that the SF position is that the deleting of child records should be handled by the data base. However it seems that if the framework were enhanced to save the child records before the parent on deletes, it would handle the majority of situations.
Finally I posted another question regarding timeouts when saving BOs with a parent/child relationship on a transaction that was never answered. http://forum.strataframe.net/Topic9625-10-1.aspx?Highlight=timeout