Строка подключения C # не указана и инициализирована ошибка

#c# #.net #sql-server #database #connection-string

#c# #.net #sql-сервер #База данных #строка подключения

Вопрос:

Я новичок.Сетевая разработка, и я пытаюсь получить некоторые данные из локальной базы данных.

ниже приведена строка подключения в файле конфигурации

 <connectionStrings>
    <add name="ConnectionString" connectionString="server=.SQLEXPRESS;database=mkhzn;Integrated Security=SSPI;User Instance=True"/>
  </connectionStrings>
 

Ниже приведена модель представления, которая вызывает класс уровня данных

 class EmployeeDetailsVM : Class1
    {
        private EmployeeUI.Employee _employee;
        public EmployeeUI.Employee Employee
        {
            get => _employee;
            set
            {
                _employee = value;
                OnPropertyChanged("Employee");
            }
        }

        public EmployeeDetailsVM()
        {
            IEmployeeBL employeeBL = new EmployeeBL.EmployeeBL(new EmployeeDAL.EmployeeDAL());
            Console.WriteLine("I'm connected to DB 2");
            Employee = employeeBL.GetAllEmployees().FirstOrDefault();
            Console.WriteLine("Displayed");
        }
    }
 

а ниже приведен класс уровня данных

 public class EmployeeDAL : IEmployeeDAL
    {
        
       

        public List<Employee> GetAllEmployees()
        {
            var employees = new List<Employee>();
            string constr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            using (SqlConnection connection = new SqlConnection(constr))
            {
                connection.Open();
                SqlCommand selectCommand = new SqlCommand("Select * from Employee", connection);
                
                Console.WriteLine("I'm connected to DB");
                SqlDataReader reader = selectCommand.ExecuteReader();
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        var employee = new Employee
                        {
                            Employee_ID = reader.GetInt32(0),
                            First_Name = reader.GetString(1),
                            Last_Name = reader.GetString(2),
                            Date_Birth = reader.GetDateTime(3),
                            Street_Address = reader.GetString(4),
                            city = reader.GetString(5),
                            Province = reader.GetString(6),
                            Joining_Date = reader.GetDateTime(7),
                            Resignation_Date = reader.GetDateTime(8)
                        };
                        employees.Add(employee);
                    }
                }
                else { }
                reader.Close();
            }
            return employees;
        }
    }
 

Может кто-нибудь привести меня к разгадке этой проблемы? Как вы можете видеть, я инициализирую строку подключения в вышеупомянутом классе, но при отладке он показывает, что строка подключения не была инициализирована.

Комментарии:

1. Итак, когда вы ставите точку останова на using (SqlConnection connection = new SqlConnection(constr)) строке, чему на самом деле соответствует значение constr ?

2. Кроме того, я бы не ожидал, что ViewModel будет иметь такой уровень связи с BL; если бы я создавал виртуальную машину, она бы в значительной степени просто знала об элементах данных, которые будет использовать пользовательский интерфейс. BL мог бы знать о виртуальных машинах, если бы не было какого-то промежуточного уровня, но не наоборот.

3. Не так ли Properties.Resources.ConnectionString ?

4. @Caius Jard это не достигает точки останова.

5. Как это может быть не так? Куда это идет? Отладьте его