Guasto alla stringa di connessione di Entity Framework

Sto facendo una piccola libreria (DLL) per gestire gli utenti e i loro ruoli / privilegi. Il piano è di essere in grado di aggiungere questa DLL ad un progetto MVC ed essere in grado di manipolare utenti / ruoli / ecc. Tutti i dati risiedono in un db SQL.

Sto usando il framework di quadro per l’accesso ai dati.

Così, quando inizializzo un nuovo RoleManager (questo è il nome della class principale nella libreria che sto creando), lo fornisco con una connectionString in questo modo:

RoleManager roleManager = new RoleManager(string connectionString); 

Quindi all’interno del costruttore lo faccio:

 db = new RoleManagerEntities(connectionString); //This is the EntityFramework 

E sto cercando di fornire questa stringa di connessione (tra molte altre)

 "metadata=res://*/RoleManager.csdl|res://*/RoleManager.ssdl|res://*/RoleManager.msl;provider=System.Data.SqlClient;provider connection string='Data Source=localhost;Initial Catalog=Login;Integrated Security=True;Connection Timeout=60; multipleactiveresultsets=true'" 

E ottengo il seguente errore:

 The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid. 

Questa domanda è il risultato del tentativo di istanziare l’EF dal mio nuovo progetto senza fornire una stringa di connessione e senza avere nulla all’interno della configurazione della mia app in modo che l’impostazione fosse predefinita. Peccato che non posso cancellarlo ora.

Basta copiare le informazioni sulla stringa di connessione dal file di configurazione DLL nel file di configurazione eseguibile.

Fondamentalmente si sta tentando di creare un’istanza di ObjectContext tramite questo ObjectContext Constructor (String) senza passare il parametro stringa nel formato previsto e questo è il problema.
Ecco cosa devi fare:

1. Per prima cosa crea una voce nel tuo “progetto di prova” app.config perché quella è la posizione che il CLR sta cercando per trovare la stringa di connessione in fase di esecuzione.

      

2. Ora cambia il codice per passare il nome della stringa di connessione invece della stringa di connessione effettiva:

 db = new RoleManagerEntities("name=RoleManagerEntities"); 

Il costruttore potrebbe cercare una stringa di connessione nell’impostazione connectionStrings del tuo web.config con il nome che hai passato come parametro.

Quindi se chiami:

 db = new RoleManagerEntities("Foobar"); 

Sta cercando:

Non sono sicuro che questa sia la soluzione ma è quello che il messaggio di errore sembra indicare.

Non sono un esperto di EF, ma non credo che la stringa di connessione sia valida. Provare:

 metadata=res://*;provider=System.Data.SqlClient;provider connection string='Data Source=localhost;Initial Catalog=Login;Integrated Security=True;Connection Timeout=60; multipleactiveresultsets=true'