一般来说...持久层中定义的持久对象如下:
class student
{
private int m_id;
private string m_name;
... public int ID
{
set{ m_id = value; }
get{ return m_id; }
} public string Name
{
set{ m_name = value; }
get{ return m_name; }
}
...
}
如上设计的持久对象, 如果数据库中需要对字段设置NULL值,该如何解决呢?
class student
{
private int m_id;
private string m_name;
... public int ID
{
set{ m_id = value; }
get{ return m_id; }
} public string Name
{
set{ m_name = value; }
get{ return m_name; }
}
...
}
如上设计的持久对象, 如果数据库中需要对字段设置NULL值,该如何解决呢?
使用 DBNull.Value
student test = new student()
test.name = DBNull.Value;
public string Name
{
set{
if(value == null)
{
value = null;
}
else
{m_name = value;}
}
get{ return m_name; }
}
也可以用Nullable类型,但是据说耗资源...还有其他办法么...还有一点就是赋过值和未赋过值该如何区别呢?
int?
decimal? 完全可以大到效果
int? number1 = null;
number1 = 123456;
decimal? number2 = null;
number2 = 3434;
MessageBox.Show(number1.ToString());
MessageBox.Show(number2.ToString());
class student
{
private int m_id;
private string m_name;
... public int ID
{
set{ m_id = value; }
get{ return m_id; }
} public string Name
{
set{ m_name = value; }
get{ return m_name; }
}
...
}
int 类型的你能给他赋DBNll.Value么?如果改成下面
class student
{
private int? m_id;
private string m_name;
... public int? ID
{
set{ m_id = value; }
get{ return m_id; }
} public string Name
{
set{ m_name = value; }
get{ return m_name; }
}
...
}
那么这个ID完可以赋值null