我在获取属性时遇到错误' BusinessLayer.EmployeeBusinessLayer.Employees.get':并非所有代码路径都返回值

时间:2016-04-06 18:08:36

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

我在get属性中收到错误,并非所有代码路径都返回值。

namespace BusinessLayer
    {
        class EmployeeBusinessLayer
        {
            public IEnumerable<Employee> Employees
            {
                get // Here i am getting an error that not all code paths return a value
                {
                    string ConnectionString = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
                    List<Employee> employees = new List<Employee>();
                    using (SqlConnection con = new SqlConnection(ConnectionString))
                    {
                        SqlCommand cmd = new SqlCommand("spGetEmployees", con);
                        cmd.CommandType = CommandType.StoredProcedure;
                        con.Open();
                        SqlDataReader rdr = cmd.ExecuteReader();
                        while (rdr.Read())
                        {
                            Employee employee = new Employee();
                            employee.Emp_Id = Convert.ToInt32(rdr["Emp_Id"]);
                            employee.Emp_Name = Convert.ToString(rdr["Emp_Name"]);
                            employee.Designation = Convert.ToString(rdr["Designation"]);
                            employee.City = Convert.ToString(rdr["City"]);
                            employee.State = Convert.ToString(rdr["State"]);
                            employee.Country = Convert.ToString(rdr["Country"]);

                            employees.Add(employee);
                        }
                    }
                }
            }
        }
    }

2 个答案:

答案 0 :(得分:0)

错误信息可以按字面意思理解:

namespace BusinessLayer
    {
        class EmployeeBusinessLayer
        {
            public IEnumerable<Employee> Employees
            {
                get // Here i am getting an error that not all code paths return a value
                {
                    string ConnectionString = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
                    List<Employee> employees = new List<Employee>();
                    using (SqlConnection con = new SqlConnection(ConnectionString))
                    {
                        SqlCommand cmd = new SqlCommand("spGetEmployees", con);
                        cmd.CommandType = CommandType.StoredProcedure;
                        con.Open();
                        SqlDataReader rdr = cmd.ExecuteReader();
                        while (rdr.Read())
                        {
                            Employee employee = new Employee();
                            employee.Emp_Id = Convert.ToInt32(rdr["Emp_Id"]);
                            employee.Emp_Name = Convert.ToString(rdr["Emp_Name"]);
                            employee.Designation = Convert.ToString(rdr["Designation"]);
                            employee.City = Convert.ToString(rdr["City"]);
                            employee.State = Convert.ToString(rdr["State"]);
                            employee.Country = Convert.ToString(rdr["Country"]);

                            employees.Add(employee);
                        }
                    }
                  return employees;
                }
            }
        }
    }

答案 1 :(得分:0)

需要退还您的员工。你也应该Close()并处理你的读者。

using(IDataReader rdr = cmd.ExecuteReader())
{
 while (rdr.Read())
 {
   Employee employee = new Employee();
   employee.Emp_Id = Convert.ToInt32(rdr["Emp_Id"]);
   ...

   employees.Add(employee);
  }
  rdr.Close();
}
return employees;