一、什么是Linq to SQL
Linq to SQL在使用的时候,有两种方式
(1)根据已经存在的数据库去创建实体类,这种方式只需要在设计器中,选择从“
服务器资源管理器”中托动相关的数据表即可,这里不重点讨论,
(2)通过“
工具箱”拖动相关的类、和关联到设计器中,然后再将这个实体类映射到实际的数据库中。那么怎么去映射到数据库中呢,具体操作方法如下
根据数据实体类创建数据库:
static void Main(string[] args)
{
StudentDataContext tt = new StudentDataContext(@"Data Source=LENOVO\MYSQLSERVER;Initial Catalog=StudentScore;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False");
bool b = tt.DatabaseExists();
if (!b)
{
tt.CreateDatabase();
}
Console.WriteLine("创建成功!");
}
即数据库的创建是通过DataContext类去实现的,在创建自定义的实体类的时候,都是从这个类继承的。
二、数据库的操作
DataContext类是程序与数据之间的桥梁,它提供了数据库的种种操作方法,包括“
查询、添加、修改、删除” 四大主要操作。
1、添加数据
因为使用第二种方式创建的数据库,是后来映射到数据库中的,数据库中还没有数据,需要添加数据进去,添加数据有两种方式
(1)InsertOnSubmit()方法将单个实体添加,它是Table类的对象的方法
//给数据库的表添加数据
StudentDataContext dataContext = new StudentDataContext();
Student[] students = new Student[3] {new Student(),new Student(),new Student() };
students[0].Name = "张三"; students[0].ScoreID = "1"; students[0].Age = "23"; students[0].Sex = "男";
students[1].Name = "李四"; students[1].ScoreID = "2"; students[1].Age = "24"; students[1].Sex = "男";
students[2].Name = "菲菲"; students[2].ScoreID = "3"; students[2].Age = "25"; students[2].Sex = "女";
for (int i = 0; i < students.Length; i++)
{
dataContext.Student.InsertOnSubmit(students[i]); //每次只添加一个数据记录,即一个数据表的对象
dataContext.SubmitChanges(); //最后一定要提交更改
}
Console.WriteLine("添加成功!");
添加之后,我们可以查看自己的数据库的数据表,结果如下:
(2)InsertAllOnSubmit()将实体的集合添加,它是Table类的对象的方法,它添加的是数据集合,一次添加多个数据记录
//给数据库的表添加数据
StudentDataContext dataContext = new StudentDataContext();
Score[] scores = new Score[3] { new Score(), new Score(), new Score() };
scores[0].ScoreID = "1"; scores[0].Chinese = "100"; scores[0].Math = "101"; scores[0].English = "102";
scores[1].ScoreID = "2"; scores[1].Chinese = "110"; scores[1].Math = "111"; scores[1].English = "112";
scores[2].ScoreID = "3"; scores[2].Chinese = "120"; scores[2].Math = "121"; scores[2].English = "122";
dataContext.Score.InsertAllOnSubmit(scores); //添加一个数据集合
dataContext.SubmitChanges(); //最后一定要提交更改
Console.WriteLine("添加成功!");
添加数据之后,得到的结果如下:
2、查询操作
StudentDataContext dataContext = new StudentDataContext();
IEnumerable query = from score in dataContext.Score
orderby score.Chinese //根据语文分数进行查询
select score;
foreach (var item in query)
{
Console.WriteLine($"{item.ScoreID} {item.Chinese} {item.Math} {item.English}");
}
查询的结果如下:
3、修改数据操作
StudentDataContext dataContext = new StudentDataContext();
foreach (Student student in dataContext.Student)
{
student.Age = student.Age + 2; //每个学生的年龄加2
}
dataContext.SubmitChanges(); //提交更改
4、删除操作
DeleteOnSubmit()方法从Table类的实例中删除单个实体,
DeleteAllOnSubmit()方法将从 Table类的实例中删除实体的集合。
如下所示:
StudentDataContext tt =
new
StudentDataContext();
int id=
Convert.ToInt32(e.CommandArgument);
var result =
from stu
in
tt.Student
where stu.Name ==id
select
stu; //找到需要删除的记录
tt.UserInfo.DeleteAllOnSubmit(result); //删除数据集合
tt.SubmitChanges(); //提交更改
三、总结
常见的四大操作“添加、查询、修改、删除” ,
“查询” 使用的是Linq语法,不需要提交更改
其他三个操作方法最后都是需要提交更改的,tt.SubminChanges();