
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 "无数据";
}
}
}
}