Linq to sql 类 LinQ它就是一个集成化的数据库访问类,它会自动生成许多原本需要我们自己创建的东西;
它和ADO.NET是一样的东西,都是为了访问数据库而出现的,EF框架
一、创建LinQ类
1.在创建号的网站项目上右击添加,添加一个LinQ SQL类(图1)
2.点选服务器资源管理器,点击左上小插头图标,弹出连接数据库页面,将页面中的信息填写,点击确定按钮(图2)
3.左侧列表中出现在填写连接数据库页面时所选择的数据库,选择其中要使用的表,用鼠标按住直接拖到右侧空白区,完成实体类自动封装(图3)
注:用LinQ连接数据库时,选择的表必须设有主键,否则读取不到
图1 :
图2:
图3:
二、LinQ数据库操作类的写法
using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary> /// StudentData 的摘要说明 /// </summary> public class StudentData { DataStudentDataContext con = null; public StudentData() { con = new DataStudentDataContext(); } //查询学生表所有信息 public List<Student> selectAll() { List<Student> list = new List<Student>(); list = con.Student.ToList();//返回一个泛型集合 return list; } //根据编号查询此编号学生的信息 public Student select(string code) { Student stu = new Student(); //查找学生表中编号为传过来的编号的信息,取第一条 stu = con.Student.Where(r => r.code == code).FirstOrDefault(); return stu; } //向学生表中添加一条信息 public void insert(Student stu) { con.Student.InsertOnSubmit(stu);//将传过来的这条信息,添加到提交按钮 con.SubmitChanges();//执行添加方法 } //根据编号删除此学生的信息 public void dele(string code) { //先根据编号查询出要删除学生的信息 var stu = con.Student.Where(r => r.code == code).FirstOrDefault(); con.Student.DeleteOnSubmit(stu);//将这条信息放到删除方法里面 con.SubmitChanges();//执行这个删除方法 } //修改学生表中的信息 public void update(Student s) { //先通过编号查询出要修改的这条信息 var ss = con.Student.Where(r => r.code == s.code).FirstOrDefault(); //再将传过来的修改好的信息挨个赋值给这条信息的每一项 ss.code = s.code; ss.name = s.name; ss.sex = s.sex; ss.birthday = s.birthday; ss.score = s.score; con.SubmitChanges();//执行这个方法; 注:写完方法一定要进行这一步执行才可以有效 } }
三、LinQ封装实体类字段扩展
使用linq连接数据库,会自动封装实体类,无法在他封装好的代码中直接写字段扩展,但是,他封装的类是partial可以进行扩展的,在自动封装实体类时类名就是用的数据库使用的表名,所有自己创建一个同名的类,并且也是public partial可补充的,删掉原页面的构造函数,在创建的类中直接写字段扩展方法
using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary> /// Student 的摘要说明 /// </summary> public partial class Student { public string sextr { get { if (_sex != null) { return (bool)_sex ? "男" : "女"; } else { return "无数据"; } } } }