#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. Как это может быть не так? Куда это идет? Отладьте его