Entity Framework e lo strano errore

Ho voglia di condividere una esperienza che mi è capitata un paio di settimane fa.

Tra le altre cose, in questo periodo mi sto occupando del porting di un progetto Legacy, di cui non verrà conservato nulla se non la base di dati. Visti i tempi molto rilassati abbiamo deciso di usarlo come banco di prova per Entity Framework ed assicuro che è un gran bel banco di prova: la creazione del dominio non si limita ad importare lo schema dal DB che è tutt'altro che semplice e "ben fatto".

Arrivo al dunque: inizialmente abbiamo creato l'EDM a partire dallo schema, per poi smanettarci a colpi di designer e Xml.

Ad un certo punto non ben definito dello "smanettamento" ci siamo imbattuti in un errore di compilazione alquanto strano:

"Index was outside the bounds of the array."

Ok, l'errore in se non è per nulla strano. Il problema che veniva sollevato in compilazione, senza però "rompere" il processo di compilazione, permettendo quindi di avviare l'applicazione e ripresentandosi inesorabilmente, questa volta bloccando l'esecuzione.

Il compilatore inoltre non ci aiutava: l'errore era indicato alla riga 1 colonna 1 del file EDM.

Come è andata? L'errore non è stato risolto, o almeno non nel senso classico: trovo la causa, sistemo l'errore.

Abbiamo proceduto diciamo in modo empirico ("Ad Catsum"), ringraziando il buon Source Code Control che ci permetteva di riportarci allo stato iniziale ogni volta che ritenevamo di aver raggiunto un punto di non ritorno, in modo semplice.

La via che ci ha permesso di non vedere più il fastidioso errore è stata quella di eliminare tutte le associazioni tra le Entity per poi ri-aggiungerle e mapparle una ad una. Dopo questa scientifica procedura il nostro modello Compilava e Funzionava correttamente.

La nostra esperienza ci ha permesso di formulare una ipotesi, ovvero che il problema fosse legato alle molteplicità 0..* di alcuni end delle associazioni: questa ipotesi deriva dal fatto che la differenze tra il modello non funzionante "sembrava" essere solo quella. Questa ipotesi non è stata però provata perchè togliendo dette molteplicità al modello non funzionante continuava a non funzionare e indovinate un po' aggiungendole al modello funzionante questo continuava a funzionare!!

I file sono comunque molto diversi tra di loro e confrontarli in modo automatico non è servito a molto.

Curiosando "a mano" tra i Kg di Xml "sembra" che il contenuto sia lo stesso! Prevedo per il futuro un progettino che confronta due file EDM...

 

Matteo

 

Print | posted @ sabato 29 novembre 2008 01:24

Comments have been closed on this topic.