学习笔记(八)——ORM的应用
学习笔记(八)——ORM的应用
一、使用ADO.NET改写控件载入信息的代码
EduBase eduBase=new EduBase(); var student=(from s in eduBase.student where s.No=="3120707001" select s).FirstOrDefault(); var classes=from c in eduBase.Class select c; this.cmb_Class.DataSource=Class; this.cmb_Class.DisplayMember="Number"; this.cmb_Class.ValueMember="No"; if(student!=null) this.txb_No.Text=student.No ; this.txb_Name.Text=student.Name ; this.rdb_Male.Checked=student.Gender; this.rdb_Female.Checked=!student.Gender; this.dtp_BirthDate.Value=student.BirthDate; this.cmb_Class.SelectedValue=student.ClassNo; this.txb_Speciality.Text=student.Speciality;
二、改写数据网格(实现批量修改功能)
1、 载入数据
用可视化操作导入数据库以及数据表,在载入控件中输入以下代码
Edubase edubase=new Edubase(); var students=from s in edubase.Student; Select s;
this.dgv_Score.DataScorce=Students; //将数据网格视图的数据源设为学生数据表;
2、 提交修改后的数据
(1)提交修改后的数据只需用一个语句:eduBase.SaveChanges();
(2)注意:因EduBase在载入控件和提交控件都需要用到,所以应定义为全局变量,即定义在方法体之外,可定义为私有或者公有
namespace Ex51_Table_Adapter { public partial class frm_StudentTable : Form { Private EduBase EduBase; …….
(3)将EdeBase定义在方法体外后,载入控件的代码应更改为:
EduBase eduBase=new EduBase (); this.EduBase=eduBase; var students=from s in edubase.Student; Select s; This.dgv_Score.DataScorce=Students;
(4)保存修改后的信息
int rowAffected=this.EduBase.SaveChanges();
三、改写树形图
1、 前面的例子中,用代码载入时后台数据库表格中的外键约束没有申明,而是在前端的代码中实现,而可视化时,我们将这些代码都省去了,所以在后端的数据库中应当定义好表格之间的关联以及外键约束
2、 实现表格间的关系
EduBase eduBase = new EduBase(); var departments=from d in Department.Include(“Major.Class”) // 使用Include方法实现两个表格之间的关联
select d;
3、 形成树形结点
this trv_EductionUnit.Node.Clear(); foreach(Department department in departments) { TreeNode departmentNode = new TreeNode(); departmentNode.Text=department.Name; this.trv_ EductionUnit.Nodes.Add(departmentNode); foreach(Major major in department.Major) { TreeNode majorNode= new TreeNode(); majorNode.Text=major.Name; departmentNode.Nodes.Add(majorNode); foreach(Class studentClass in major.Class) { TreeNode classNode= new TreeNode(); classNode.Text=studentClass.Name; classNode.Tag=studentClass.No; majorNode.Nodes.Add(classNode); } } }