ArgumentException lors de la création d'une instance d'objet héritant de ObjectContext
-
10-07-2019 - |
Question
Je suis en train de suivre vaguement un excellente série d'articles de blog de Kazi Manzur Rashid comme exercice d'apprentissage pour apprendre à implémenter de nouveaux modèles de conception (pour moi au moins), mais je commence à avoir des problèmes.
J'ai essentiellement copié son code pour les classes Database
, RepositoryBase
et RepositoryBaseTests
, mais lorsque j'essaie d'exécuter les tests, obtenir un message d'erreur disant
Impossible de créer une instance de la classe Booking.Infrastructure.EntityFramework.Repositories.Tests.RepositoryBaseTests. Erreur: System.Reflection.TargetInvocationException: une exception a été levée par la cible d'un appel. --- > System.ArgumentException: le format de la chaîne d'initialisation n'est pas conforme à la spécification commençant à l'index 0 ..
Grâce au débogueur, j'ai vérifié que l'exception est levée sur le constructeur de la classe Database
, qui ressemble à ceci:
public Database(
IConfigurationManager configurationManager,
string connectionstringName)
: base(
GetConnectionString(configurationManager, connectionstringName),
"BookingEntities")
{ // Nothing happens here }
L'erreur est générée lors de l'appel du constructeur base
et si je codais en dur les valeurs que je suis en train d'envoyer, cela ressemblerait à ceci:
: base("Dummy connStr", "BookingEntities")
Pourquoi cela ne fonctionne-t-il pas?
La solution
"Connecteur factice" n'est pas une chaîne de connexion EF valide.
Une chaîne de connexion EF valide ressemble à:
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""