今天敲代码的时候,发现了一个小细节。。就是
                if (!string.IsNullOrEmpty(Time.Text.Trim()))
                    BasicInfo.Time= DateTime.Parse(Time.Text.Trim());
                else
                    BasicInfo.Time= null;------------------------------------这两种方法并不一样
  CompanyBase.Time= Time.Text.Trim() == string.Empty ? null : Convert.ToDateTime(Time.Text.Trim())  CompanyBase.Time= Time.Text.Trim() == string.Empty ? DBNull.Value: Convert.ToDateTime(Time.Text.Trim())上面一种方法可以达到null的赋值,下面的方法却达到不了
会抛出一个ex。。求解, 另 time再实体类里面都是 可空类型···

解决方案 »

  1.   

    value=bool? "":""
    冒号前后的值必须类型一致,很明显,在你的if...else中,if后面的是DateTime,不可为空的
    而else后面的是DateTiem? ,是可以为空的.
      

  2.   

    意思就是Datetime? aa 这样声明类型可以赋NULL值了,但是不能赋''这样的空值了,不然在数据库中有一条1900-01-01的默认数据。
      

  3.   

    最后发现,插入数据库的时候,null。DBNull.Value 也不行。
      

  4.   

    楼主理解有误。
    第二种方法你少了一个类型转换
    应该写做:CompanyBase.Time= string.IsNullOrEmpty(Time.Text.Trim()) ? (DateTime?)null : Convert.ToDateTime(Time.Text.Trim())
      

  5.   

    差别就是当你的CompanyBase.Time为null的时候,上面会给到null
    下面的改一下CompanyBase.Time= string.IsNullOrEmpty(Time.Text) ? null : Convert.ToDateTime(Time.Text.Trim());
      

  6.   


    你试试。再实体里面加个? 然后用
    CompanyBase.Time= Time.Text.Trim() == string.Empty ? null : Convert.ToDateTime(Time.Text.Trim())
     这方法赋值,看可否成功
      

  7.   

    插入数据库的时候,如果要用null,要求你的数据表定义中该字段必须可为空。
      

  8.   


    如果Time.Text为null,楼主的第一种方法也是异常的,他调用了Time.Text.Trim()
      

  9.   


                    BasicInfo.Time= Time.Text.Trim() == string.Empty ? (DateTime?)null : Convert.ToDateTime(Time.Text.Trim()); 这样写也会跑出异常,不行
      

  10.   

    这个问题我刚刚解决了BasicInfo.Time= Time.Text.Trim() == string.Empty ? (DateTime?)null : Convert.ToDateTime(Time.Text.Trim());、由于实体是引用类型,所以这里赋值之后,再数层那里还要判断一下。
      if (Entity.EmplyeeHappyDay != null)
                    parameters[0].Time= Entity.Time;
                else
                    parameters[0].Time= DBNull.Value;然后实体层那里一定要? 这里就ok了。。
      

  11.   

    异常是什么?
    以上那句我只看出有一个地方有可能异常
    Time.Text.Trim()
    如果Time.Text是null那么就会出现空引用。
    但如果Time是个控件,应该不会出现Time.Text为null你最好把上下文发出来
      

  12.   


    这个就是上下文·
    time就是textbox。我简略了而已 
      

  13.   

    现在我发现了一下,还是类型问题,强类型和弱类型的问题。 强类型对数据进行操作的时候就要赋值。string弱类型的话,null就是null···