今天做一个三层项目,在后台更新用户信息,碰到了一个可空值类型的问题:LockDataTime,TestInt都是可以为空的,这个时候我们就要用到 DateTime? int? 这种可空值类型的用法了,现在我来总结一下它在三层项目中的使用:
Model文件里:声明可以为空
public DateTime? Lockdatatime
{
get;
set;
}
public int? Testint
{
get;
set;
}
DAL文件:
读取数据到model里:
tseat.Lockdatatime = reader.IsDBNull(5) ? null : (DateTime?)reader.GetDateTime(5);
tseat.Testint = reader.IsDBNull(6) ? null : (int?)reader.GetInt32(6);
//在数据库里判断是否为空?(三元运算)为空就赋值一个null,不为空就取对应的值,null与object不能隐式转换,所以前面要加个DateTime?的一个可空值类型的判断。
UI层:
判断是否为空,如果是空就赋值为null,不为空就赋值相应的值。
txterrotims.Text = seate.Erroetimes == null ? null : seate.Erroetimes.ToString();
txttestint.Text = seate.Testint == null ? null : seate.Testint.ToString();
就这样解决了一个数据库里可空值的问题.