#linq #linq-to-sql
#linq #linq-to-sql
Вопрос:
Используя Linq для sql и server Explorer, я сопоставил с сохраненной процедурой loginvalidation. Итак, я пишу следующий код:
ClientReportingDataContext db = new ClientReportingDataContext();
var data = db.ADMIN_LoginValidation(login, password);
Оно выдает исключение в следующей строке:
public ClientReportingDataContext() :
base(global::System.Configuration.ConfigurationManager.ConnectionStrings["FeedsConnectionString"].ConnectionString, mappingSource)
Возникло исключение:
Ссылка на объект не установлена на экземпляр объекта.
Я вызываю эту функцию из класса модульного тестирования. Я не могу использовать feedsconnectionstring в web.config.
Я поместил web.config в папку unit tests, а также в раздел debug и debug/bin. Не уверен, чего мне не хватает.
Заранее спасибо за любой совет.
Комментарии:
1. Мне кажется, что подобную ошибку должно быть легко отследить с помощью отладчика. Поставьте точку останова в строке, вызывающей исключение, и выясните, какое свойство возвращает значение null.
Ответ №1:
Для модульного теста,
ConnectionStrings["FeedsConnectionString"].ConnectionString
не будет выполняться чтение из вашего web.config
файла; это будет чтение из файла конфигурации приложения для тестового запуска. Поэтому, если вы не поместили FeedsConnectionString
в файл конфигурации приложения для вашего тестового запуска,
ConnectionStrings["FeedsConnectionString"]
является null
и так
ConnectionStrings["FeedsConnectionString"].ConnectionString
собирается выдать NullReferenceException
.
Вот почему файлы тестирования и конфигурации приложения плохо уживаются.
Вам следует учитывать следующее:
public ClientReportingDataContext(string connectionString) :
base(connectionString, mappingSource)
Затем введите вашу строку подключения в свой тест.