Ответ 1
Причина этого заключается в том, что при удалении объектов из контекста EF активно обновляет счетчик свойств навигации Regs, что означает, что коллекция detail.Regs изменяется во время цикла foreach, который всегда вызывает исключение, которое вы получаете.
Вы можете создать новый объект коллекции и удалить его из него следующим образом:
foreach (var reg in detail.Regs.ToList())
{
this.db.Regs.DeleteObject(reg);
}
Или даже вы можете сделать его более чистым с помощью метода LINQ ForEach:
detail.Regs.ToList().ForEach(r => db.Regs.DeleteObject(r));