ArgumentException durante la creazione dell'istanza di oggetto che eredita da ObjectContext
-
10-07-2019 - |
Domanda
Sto seguendo vagamente un eccellente serie di post di blog di Kazi Manzur Rashid come esercizio di apprendimento per imparare a imparare implementare alcuni nuovi (almeno per me) modelli di progettazione, ma ho problemi sin dall'inizio.
Ho praticamente copiato il suo codice per le classi Database
, RepositoryBase
e RepositoryBaseTests
, ma quando provo ad eseguire i test, ricevi un messaggio di errore che dice
Impossibile creare l'istanza della classe Booking.Infrastructure.EntityFramework.Repositories.Tests.RepositoryBaseTests. Errore: System.Reflection.TargetInvocationException: l'eccezione è stata generata dalla destinazione di una chiamata. --- > System.ArgumentException: il formato della stringa di inizializzazione non è conforme alle specifiche a partire dall'indice 0 ..
Tramite il debugger ho verificato che l'eccezione viene generata sul costruttore per la classe Database
, che assomiglia a questa:
public Database(
IConfigurationManager configurationManager,
string connectionstringName)
: base(
GetConnectionString(configurationManager, connectionstringName),
"BookingEntities")
{ // Nothing happens here }
L'errore viene generato quando si chiama il costruttore base
e se codifico i valori che sto inviando, sembrerebbe così:
: base("Dummy connStr", "BookingEntities")
Perché non funziona?
Soluzione
" Dummy connStr " non è una stringa di connessione EF valida.
Una stringa di connessione EF valida è simile a:
connectionString="metadata=res://*/Data.Model.csdl|res://*/Data.Model.ssdl|res://*/Data.Model.msl;provider=System.Data.SqlClient;provider connection string="Data Source=SERVERNAME\SQLDEV2008;Initial Catalog=DBName;Integrated Security=True;MultipleActiveResultSets=True""