ArgumentException при создании экземпляра объекта, который наследуется от ObjectContext
-
10-07-2019 - |
Вопрос
Я свободно слежу за отличная серия постов в блоге Кази Манзур Рашид в качестве учебного упражнения для обучения тому, как реализовать некоторые новые (по крайней мере для меня) шаблоны проектирования, но у меня возникают проблемы с самого начала.
Я в основном скопировал его код для классов База данных
, RepositoryBase
и RepositoryBaseTests
, но когда я пытаюсь запустить тесты, я получить сообщение об ошибке
Невозможно создать экземпляр класса Booking.Infrastructure.EntityFramework.Repositories.Tests.RepositoryBaseTests. Ошибка: System.Reflection.TargetInvocationException: Исключение было сгенерировано целью вызова. --- & GT; System.ArgumentException: формат строки инициализации не соответствует спецификации, начиная с индекса 0 ..
С помощью отладчика я убедился, что исключение выдается в конструкторе для класса Database
, который выглядит следующим образом:
public Database(
IConfigurationManager configurationManager,
string connectionstringName)
: base(
GetConnectionString(configurationManager, connectionstringName),
"BookingEntities")
{ // Nothing happens here }
Ошибка возникает при вызове конструктора base
, и если бы я жестко закодировал значения, которые я сейчас отправляю, это выглядело бы так:
: base("Dummy connStr", "BookingEntities")
Почему это не работает?
Решение
" Dummy connStr " не является допустимой строкой соединения EF.
Допустимая строка подключения EF выглядит следующим образом:
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""