使用Linq时要注意一下问题:
1.创建Linq连接后生成的dbml文件不要变动,生成的表不要碰,拖动表也会造成数据库连接发生变动,需要重新保存.
2.属性拓展的使用:添加一个新的类,不要在dbml中添加属性拓展,一旦数据库变动,属性拓展类就会失效.
3.使用Linq获取的数据都是?int,?string等?数据类型,意思是也有可能为空,这时候操作数据需要先把数据类型转化成int,string等数据类型.
在这里操作数据库用到了lambda表达式,是一种匿名函数,使用lambda表达式自动带有防攻击,不需要在使用parameter了.
什么事lambda表达式:
Stu s = con.Stu.Where(r => r.Ids.ToString() == id).FirstOrDefault();一个lambda表达式
查询数据库中Ids==id的第一条数据
FirstOrDelault() 第一条或者[不存在,不执行,为空]
数据查询:
建立LInq数据库连接后,后台编写:
using ([Linq名称]DataClassesDataContext con = new [Linq名称]DataClassesDataContext())
{
con.表名.ToList();[获取要查询数据库的数据,之后可以执行绑定数据]
}
例:
using (StudentsDataClassesDataContext con = new StudentsDataClassesDataContext()) { DropDownList1.DataSource = con.Nation.ToList(); DropDownList1.DataTextField = "NationName"; DropDownList1.DataValueField = "NationCode"; DropDownList1.DataBind(); DropDownList2.DataSource = con.Class.ToList(); DropDownList2.DataTextField = "ClassName"; DropDownList2.DataValueField = "ClassCode"; DropDownList2.DataBind(); }
添加数据:
1.实例化数据变量
2.填充变量数据
3.创建连接
4.修改数据
例:
//实例化 Stu s = new Stu(); //填充数据 s.Name = TextBox2.Text; s.Sex = RadioButtonList1.Items[0].Selected; s.Birthday = Convert.ToDateTime(TextBox3.Text); s.NationCode = DropDownList1.SelectedValue; s.ClassCode = DropDownList2.SelectedValue; s.Score = Convert.ToInt32(TextBox4.Text); // 创建连接 using (StudentsDataClassesDataContext con = new StudentsDataClassesDataContext()) {//修改数据 con.Stu.InsertOnSubmit(s); con.SubmitChanges(); }
修改数据:
1.先查到要修改的数据
2.修改这条数据
3.将修改好的数据传到数据库,完成修改
例:
string id = Request["id"]; using (StudentsDataClassesDataContext con = new StudentsDataClassesDataContext()) { Stu s = con.Stu.Where(r => r.Ids.ToString() == id).FirstOrDefault(); if (s != null) { s.Name = TextBox2.Text; s.Sex = RadioButtonList1.Items[0].Selected; s.Birthday = Convert.ToDateTime(TextBox3.Text); s.NationCode = DropDownList1.SelectedValue; s.ClassCode = DropDownList2.SelectedValue; s.Score = Convert.ToInt32(TextBox4.Text); con.SubmitChanges(); } }
数据删除:
1.查到要删除的数据
2.把要删除的数据上传数据库,进行删除
例:
string id = Request["id"]; using (StudentsDataClassesDataContext con = new StudentsDataClassesDataContext()) { //根据主键值查询出对应的这个对象 Stu s = con.Stu.Where(r => r.Ids.ToString() == id).FirstOrDefault(); if (s != null) { con.Stu.DeleteOnSubmit(s); con.SubmitChanges(); Response.Write("<script>alert('删除成功!');window.location.href='default.aspx';</script>"); } else { Response.Write("<script>alert('删除失败!');window.location.href='default.aspx';</script>"); } }