2016-11-16 2 views
0

Я пытаюсь реализовать NLayering в моем приложении asp.net mvc 5 и отделил приложение на разные уровни, один из которых является уровнем доступа к данным (DAL). В моем DAL, когда я пытаюсь получить доступ к строке подключения в моем методе Insert, я получаю исключение NullReferenceException. Я добавил ссылку System.Configuration на мой проект DAL и файл web.config, содержащий код ff.Ошибка NullReferenceException при попытке получить connectionstring из web.config

web.config

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <connectionStrings> 
<add name="JcSpaceConnectionString" connectionString="Data Source=localhost;Initial Catalog=JcSpaceDatabase;Integrated Security=True;" providerName="System.Data.SqlClient" /> 
</connectionStrings> 
</configuration> 

JcSpaceDAL.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Configuration; 
using System.Data.SqlClient; 
using System.Data; 
using JcSpaceEntities; 

namespace JcSpaceDAL 
{ 
    public class JcSpaceDAL 
    { 

     public static void Insert(JcSpaceAccount accountInfo) 
     { 
      string connectionString = ConfigurationManager.ConnectionStrings["JcSpaceConnectionString"].ConnectionString;//This line causes the nullreferenceexception 
      SqlConnection conn; 
      SqlCommand cmd; 
      using (conn = new SqlConnection(connectionString)) 
      using (cmd = new SqlCommand("spInsert")) { 
       cmd.CommandType = CommandType.StoredProcedure; 
       cmd.Parameters.AddWithValue("@Name", accountInfo.FirstName.ToString()+""+ accountInfo.LastName.ToString()); 
       cmd.Parameters.AddWithValue("@Email", accountInfo.Email); 
       cmd.Parameters.AddWithValue("@DateOfBirth", acco untInfo.DateOfBirth); 
       cmd.ExecuteNonQuery(); 
      } 


     } 
    } 
} 

Почему это вызвано?

+0

Вы должны иметь такую ​​же строку строки подключения в вашем проекте mvc web.config, а также – Damith

+0

Вы должны ** отлаживать/добавлять журналы **. –

ответ

1

Я предполагаю, что вы добавили JcSpaceConnectionString в неправильный файл web.config. Вы добавили файл web.config в свой проект DAL? Если это так, вам нужно будет перенести его в проект MVC.

+0

Видимо я сделал. :) Теперь работает . В настоящее время у меня есть метод Insert, который вызывается в методе действий. Если я изменил его для вызова в Business Logic Layer, мне нужно добавить строку соединений в проекте BLL? –

+0

Нет. Единственное место, где потребуется строка подключения, - в вашем веб-проекте. (Единственное другое место, которое вам нужно будет поместить в строку соединения, - это другой проект, который использует инфраструктуру сущности, например, где находится ваш .edmx-файл, но визуальная студия сделает это автоматически для вас .., и это необходимо только в том случае, если вы используют мастера инфраструктуры сущности во время разработки). – Rocklan

Смежные вопросы