исключение нулевой ссылки

#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)
  

Затем введите вашу строку подключения в свой тест.