假如在DAL层中有这样的代码:
House house = new House(HouseId);
SqlDataReader reader = ...........house.ExpiredDate = Convert.ToDateTime(reader["ExpiredDate"]);那么因为reader["ExpiredDate"]为dbnull, 或者ExpiredDate干脆就不是日期型的,比如在数据库端错误的设置为字符串型的。 所以在执行Convert.ToDateTime(reader["ExpiredDate"])这里就会出错。   那么BLL层只有捕获到这个错误,进而展现给UI层吗

解决方案 »

  1.   

    对reader["ExpiredDate"]进行判断,返回一个值,根据返回的值进行判断
      

  2.   

    house.ExpiredDate = Convert.ToDateTime(reader["ExpiredDate"]);
    你在这里取的值,当然是取值之前判断下了
      

  3.   

    可以自己扩展一个容错的方法,如果是正确的时间类型的数据就返回正确的值,如果不是就返回一个空的DateTime类型的结构:
           public static DateTime GetDateTime(object obj)
            {
                return obj == null || obj == DBNull.Value ? new DateTime() : Convert.ToDateTime(obj);
            }
    DateTime dt = GetDateTime(reader["ExpiredDate"]);判断dt
      

  4.   


    在 DAL层  read的时候 进行判断 ,不为空 再 read