怎样根据已经赋过值的属性来更新表中的字段值(没赋过值的不更新),举个例子:
public Class Test
{
public String Name{get;set;}
public Int Pwd{get;set;}
}
Test model=new Test()
model.Name="aaa";
ORM.Update(model);
这样更新的话就不需要更新pwd,只更新Name,请问大家都有些什么思路,给我指点指点..谢谢
这里,实体属性跟表结构是一样的!
自己做ORM太麻烦了吧,这种功能已经有很多很好的ORM实现了,推荐还是用Entity Framework吧。
可空类型也不是很好用,只是用于新建,如是用于更改呢?那就不太适用了吧。
比较规范的思路是将类实现INotifyPropertyChanged接口,该接口规定了一个PropertyChanged事件,用于提交更改通知:
#region 实现INotifyPropertyChanged
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
public event PropertyChangedEventHandler PropertyChanged;
#endregion
然后属性都这么写:
public int Age
{
get
{
return _Age;
}
set
{
_Age = value;
OnPropertyChanged("Age");
}
}
private int _Age;
然后你就修改OnPropertyChanged函数吧,在那里面实现修改记录功能就行。
你还需要注意在从数据库读取时应当直接给字段(比如_Age)赋值,而不是直接赋值于属性,这样会引发OnPropertyChanged~
建议实施前可以先看看INotifyPropertyChanged接口的相关资料。
另外,INotifyPropertyChanged接口在WinForm及WPF的数据绑定中经常需要用到,实现了就算一举两得了。
可以判断一下是否null,你可以发现很多数据类型都是诸如int?的,可以与null比较,如果是null的话就没有赋值.