I have been searching the help file and this forum but have not find a way to prevent this error. I was under the impression that the Edit code will check if there is not record in the child BOs and skip the edit state on those BO?
No. If you have the IncludeInEdit set to True, which there is really no reason to, then it will call the Edit on the BO. If there are no records then you will get this error. This is by design.
I never allow the MaintenanceFormToolstrip automatically set the Edit state of a child BO, only the primary. Obviously you want actions such as Save and Undo to handle all BOs, but in this case, unless you will always expect a child, then there is no reason to do this. Additionally, if you are using a ChildFormDialog to present the child record for editing, then you would set the Editing state then (immediately prior to showing the child dialog).
There are other options too such as always allowing modifiction by setting the ManageUIReadonlyState property to False and then manage the IsDirtyChanged event. Just another approach.
But this is be design...the Editing state is by business object, not row. So it only makes sense that a BO with no records should not be allowed to be set to an Editing state. If we were to ignore this and just set it anyway, then this would have adverse downstream effects.