L'immagine non è sufficiente per correggere il problema (senza un progetto che replica non posso capire cosa succede). C'è qualcosa di molto specifico e particolare relativo al tuo statement. Infatti, come dici tu:
No, perchè il caso si presenta solo sul nostro progetto. Se cancello i due statement e li riscrivo funziona correttamente.
Ora, veniamo all'errore. Ho presente la tua richiesta relativa ai messaggi di errore però non sempre è possibile sapere cosa non va. L'errore che segnali è un errore interno che avviene durante la modifica. Ora, quella modifica (se ho capito bene quello che stai cercando di fare dall'immagine) genera svariate decine di item di transazione nel modello e, uno di questi item (non so quale e non so perché) non è valido. Se il testo del messaggio fosse "NullPointerException" o "CorruptedObject" non credo aiuterebbe (neanche un PROGRAMMATORE) a capire cosa non va... e non aiuterebbe me a risolverlo.
InDe è scritto in C++ e quell'errore è in un blocco CATCH(...). Quel tipo di blocco non permette di sapere cosa succede né dov'è il problema. In C#, Java o Javascript potrei leggere il "message" dell'eccezione e avere lo stack trace. In C++ non c'è un oggetto in quel caso... è un catch generico che prende qualunque errore (se non ci fosse quel catch l'IDE crasherebbe e si chiuderebbe). Quell'errore viene visto nel catch, viene verificato il progetto e, dato che il progetto è ancora valido e la transazione non ha ancora operato sul modello, l'IDE può rimanere vivo. L'unica cosa che posso fare è dire al PROGRAMMATORE: non sono stato in grado di eseguire quell'operazione e non so perché... è successo in una riga di codice tra le centinata che vengono eseguite durante quella transazione. Ecco perché, avendo il progetto (QUEL PROGETTO in QUELLO STATO) posso capire esattamente cosa succede. Mi basta avviare l'IDE in debug dentro Visual Studio e chiedere a Visual Studio di fermarsi alla prima eccezione. Poi è sufficiente rieseguire esattamente l'operazione che stavi cercando di fare tu. Questo è l'unico modo che vedo di poter trovare quell'errore... E non ha senso nemmeno loggare ogni singolo step... non mi aiuterebbe a capire il motivo per cui in un determinato step le cose diventano sbagliate... e, tra l'altro genererebbe log di grandi dimensioni.
Quindi: senza progetto che replica ho poche probabilità di trovare quell'errore anche perché l'IDE non crasha. Se crashasse mi arriverebbe un DUMP che mi potrebbe permettere di capire in quale riga di codice c'è stato il problema anche se rimarrebbe da capire perché quell'oggetto è in quello stato quando viene eseguita quella riga. Saprei che in un dato punto un oggetto è NULL o invalido ma non saprei esattamente perché. Potrebbe essere NULL dall'origine o diventato NULL durante la modifica. Inoltre saresti obbligato a riavviare l'IDE a causa del crash... che in quel caso non è necessario.
Spero di essermi spiegato.
P.S. faccio fatica a capire il motivo del tono di questo thread, ma tant'è... le domande di Davide mi sembravano giuste...