2010-01-29 21 views
7

Ho un progetto Web con un modello di dati definito in un file edmx. La stringa di connessione inizia così:Come specificare la posizione dei metadati nella stringa di connessione quando si utilizza un file edmx

metadata = res: // * /;

Questo ha funzionato bene per un po '. Ma qualcun altro che lavora al progetto ha creato una dll che usa anche la struttura dell'entità e la aggiunge alla cartella bin. Ora, quando provo a creare la mia connessione, c'è un errore nel caricare i metadati.

Oltre a cambiare totalmente il modo in cui uno o entrambi stiamo facendo le cose, mi chiedo se il problema può essere risolto se la mia stringa di connessione può essere modificata per cercare solo i metadati definiti nel mio file edmx. Il problema è che per la vita di me non riesco a trovare la sintassi giusta per farlo. I metadati sono incorporati nell'assembly di output, quindi non ci sono file di metadati fisici a cui puntare. Come esattamente dovrei specificare la posizione dei metadati nella stringa di connessione?

risposta

7

Sì, ho già visto questo problema. Ed era solo una questione di tempo prima che qualcuno facesse questa domanda.

Fondamentalmente, res://*/ carica tutti i metadati in tutti gli assembly, quindi se vi è più di un set di metadati EF viene confuso.

Quindi utilizzare res://*/ per impostazione predefinita come EF fa in WebApplications è un bug, purtroppo è uno che non abbiamo avuto il tempo di risolvere.

La soluzione è quello di ottenere più specifico con la stringa di connessione o meno così: res: // /App_Code.Northwind.csdl|res:// /App_Code.Northwind.ssdl|res://*/ App_Code.Northwind.msl;

Dove App_Code è la cartella App_Code (presupponendo che il proprio modello sia nel proprio progetto Web) e Northwind è il nome del proprio EDMX. Se hai problemi a trovare i nomi da usare, guarda i nomi delle risorse nell'assembly usando qualcosa come Reflector.

Ciò indica all'EF esattamente quali CSDL, SSDL e MSL devono essere caricati dagli assiemi caricati e dovrebbe risolvere il problema.

Spero che questo aiuti

Alex

+0

Grazie mille per la risposta, Alex. I percorsi delle risorse che suggerisci hanno senso, e sono stupito che in tutto il mio inciampare nel pomeriggio non l'ho provato. Ha funzionato, in ogni caso. Un'altra domanda. Se non avesse funzionato, non saprei dove trovare l'assembly App_Code per guardarlo con Reflector. Dove sarebbe? Questo è qualcos'altro che dovrei sapere, o dovrebbe essere in grado di trovare facilmente online, ma il mio Google foo è stato orribile oggi. –

+0

Hai cercato nella directory bin? –

+0

Ho guardato lì, ma non c'è niente, tranne le DLL che sono state esplicitamente aggiunte al progetto. Devo mancare qualcosa. Devo precompilare il sito? –

Problemi correlati