使用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>"); }
}