常见代码的编写规范(三)---对象的赋值与保存
2004年12月9日
3.对象的赋值与保存
对象的赋值与保存,遵循三个步骤,1.数据的检验,2.属性的赋值,3.保存,属性赋值时,首先要保证一条语句赋一个属性的值,如果存在转换就要使用函数进行转换,以保证这一点。然后,对于一个对象中存在与别的对象的关系,该对象也需要保存时,要使用函数,单独保存该对象,不要混杂在一起。例子如下:
1.主函数
private void bt_save_Click(object sender, System.EventArgs e)
{
if(!VerifyData()) return;
SavePerson();
Response.Redirect("WFRFDList.aspx");
}
2.数据校验
private bool VerifyData()
{
string sMsg = "";
if(tb_no.Text.Trim() =="")
{
sMsg = " 必须设置员工工号";
}
if(this.tbCardNo.Text.Trim()=="")
{
sMsg+= " 必须设置员工卡卡号 ";
}
if(this.tb_name.Text.Trim()=="")
sMsg+= " 员工姓名不能为空 ";
if(ddDepartment.SelectedValue ==null || ddDepartment.SelectedValue =="")
sMsg+= " 就职部门不能为空 ";
if(ddPostion.SelectedValue ==null || ddPostion.SelectedValue =="")
sMsg+= " 职务不能为空 ";
if(ddPost.SelectedValue ==null || ddPost.SelectedValue =="")
sMsg+= " 岗位不能为空 ";
if(this.ddPostionLevel .SelectedValue ==null || ddPostionLevel.SelectedValue =="")
sMsg+= " 岗位水平不能为空 ";
if(tb_salary.Text =="")
sMsg+= "薪水不能为空";
if(sMsg.Length >0)
{
WebSiteHelper.ShowAlertMessage(sMsg);
return false;
}
return true;
}
3.属性的赋值
3a.一个对象自身的保存
private int SavePerson()
{
CPerson person= GetPerson();
person.Name = this.tb_name.Text ;
person.EnglishName = this.tbEnglishName .Text;
SaveDuty( person.ReportForDuty ,person);
person.State = 5;
person.Save();
CHelper.FlushSession();
return 0;
}
3b.关联对象的保存
private CReportForDuty SaveDuty(CReportForDuty report,CPerson person)
{
if(report==null)
report= new CReportForDuty();
report.StartTime=this.sy_start.DateValue;
report.TrainingMothes=System.Int16.Parse(this.ddMonth.SelectedItem.Value);
report.ProbationershipSalary=GetProbationershipSalary();
report.Person=person;
report.State = 1;
report.EndTime =report.StartTime.AddMonths (report.TrainingMothes);
report.RFDTime = DateTime.Now ;
report.Employee = this.SaveEmployee (report.Employee ,person);
report.ProbationershipAccession = this.SaveAccession(report.ProbationershipAccession,report.Employee);
report.Employee.CurrentAccession = report.ProbationershipAccession;
report.ProbationershipPost =this.SaveAppointPost(report.ProbationershipPost,report.Employee );
report.Employee .CurrentPost = report.ProbationershipPost;
report.Employee .Save();
report.Save();
return report;
}
3c.数据的转换
private decimal GetProbationershipSalary()
{
try
{
return Decimal.Parse(this.tb_salary.Text);
}
catch
{
return 0.0M;
}
}
4.保存
由于后台使用E/R Mapping ,这里Save只是简单的调用Save()方法就可以了。