1.Linq:Linq to sql 类 高度集成化的数据库访问技术
使用Linq是应该注意的问题:
1.创建Linq连接后生成的dbml文件不要变动,生成的表不要碰,拖动表也会造成数据库连接发生变动,需要重新保存.
2.属性拓展的使用:添加一个新的类,不要在dbml中添加属性拓展,一旦数据库变动,属性拓展类就会失效.
3.使用Linq获取的数据都是?int,?string等?数据类型,意思是也有可能为空,这时候操作数据需要先把数据类型转化成int,string等数据类型.
2.实体类:
添加一个Linq to sql 类 ----选择要使用的数据库---- 拖入要使用的表 就相当于实体类建完了。
如果进行属性扩展,在App_Code下添加类,类名同表名一致。将该类在访问修饰符后加上partial,将该类定为实体类的一部分
属性扩展的代码:
public partial class Users { public string SexStr { get { string aa = null; if(this._Sex!=null){ aa=Convert.ToBoolean(_Sex) ? "男" : "女"; } return aa; } } public string Bir { get { string bb = null; if (this.Birthday != null) { bb = Convert.ToDateTime(_Birthday).ToString("yyyy年MM月dd日"); } return bb; } } public string NationName { get { return Nation1.NationName; } } public string ClassName { get { return Class1.ClassName; } } }
3.数据访问类:
不用书写数据访问类,直接在使用数据访问类的地方用Linq进行访问就行
using(stu0314DataClassesDataContext con = new stu0314DataClassesDataContext() ) { Repeater1.DataSource = con.Users.ToList(); Repeater1.DataBind(); }
con.Users.ToList();相当于访问Users表中的全部数据,并将数据转换成一个泛型集合
4.添加数据:
(1)添加数据之前先实例化出对象,(2)填充数据,(3)创建链接(4)添加到数据库中
添加的方法:con.Users.InsertOnSumbit(对象); 执行要操作的方法:con.SubmitChanges();
Users uu = new Users(); uu.UserName = Text_Uname.Text; uu.PassWord = Text_pwd2.Text; uu.NikeName = Text_Nike.Text; if (Ra_Sex.Items[1].Selected) { uu.Sex = false; } else { uu.Sex = true; } uu.Birthday = Convert.ToDateTime( Text_Bir.Text); uu.Nation = Dr_Nation.SelectedValue; uu.Class = Dr_Cla.SelectedValue; con.Users.InsertOnSubmit(uu); con.SubmitChanges();
5.删除数据:
删除数据前要先查到这条数据再进行删除操作
通过ids进行查询这条数据返回一个对象
Users u = con.Users.Where(r=>r.ids.Tostring()==ids).FirstOrDefault();
where括号内接的是Lambda表达式r代表每一行数据,=>是基本格式 FirstOrDefault()返回第一条数据或者返还空
如果u不是空,则进行进行删除。如果为空,返回的是null
con.Users.DeleteOnSubmit(对象);
con.SubmitChanges();
string aa = Request["id"]; using (stu0314DataClassesDataContext con = new stu0314DataClassesDataContext()) { Users u = con.Users.Where(r => r.ids.ToString() == aa).FirstOrDefault(); con.Users.DeleteOnSubmit(u); con.SubmitChanges(); Response.Redirect("Default.aspx"); }
6.修改数据:
修改数据也是需要先查询到要修改的数据,对数据进行重新赋值,修改
using(stu0314DataClassesDataContext con = new stu0314DataClassesDataContext() ) { string aa = Request["id"]; Users u = con.Users.Where(r=>r.ids.ToString()==aa ).FirstOrDefault(); u.UserName = Text_Uname.Text; u.PassWord = Text_pwd2.Text; u.NikeName = Text_Nike.Text; if (Ra_Sex.Items[1].Selected) { u.Sex = false; } else { u.Sex = true; } u.Nation = Dr_Nation.SelectedValue; u.Class = Dr_Cla.SelectedValue; con.SubmitChanges(); Response.Write("<script> var aa = confirm(‘修改成功!!‘); if(aa){window.location.href=‘Default.aspx‘}</script>"); }
7.Lambda表达式:
con.Users.Where(r=>r.ids.Tostring()==ids).FirstOrDefault();返回满足条件的第一条数据或者返还空
如果是两个条件查询的话用&&接
con.Users.Where(r=>r.UserName=="zhangsan" && r.PassWord=="123").FirstOrDefault();