C#的Linq to SQL
2017-05-02 10:49
330 查看
一、什么是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<T>类的对象的方法
//给数据库的表添加数据
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("添加成功!");
添加之后,我们可以查看自己的数据库的数据表,结果如下:
![](https://img-blog.csdn.net/20170502111249939?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjc4MjU0NTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(2)InsertAllOnSubmit<TSubEntity>()将实体的集合添加,它是Table<T>类的对象的方法,它添加的是数据集合,一次添加多个数据记录
//给数据库的表添加数据
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<Score>(scores); //添加一个数据集合
dataContext.SubmitChanges(); //最后一定要提交更改
Console.WriteLine("添加成功!");
添加数据之后,得到的结果如下:
![](https://img-blog.csdn.net/20170502111324873?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjc4MjU0NTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2、查询操作
StudentDataContext dataContext = new StudentDataContext();
IEnumerable<Score> 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}");
}
查询的结果如下:
![](https://img-blog.csdn.net/20170502111357655?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjc4MjU0NTE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
3、修改数据操作
StudentDataContext dataContext = new StudentDataContext();
foreach (Student student in dataContext.Student)
{
student.Age = student.Age + 2; //每个学生的年龄加2
}
dataContext.SubmitChanges(); //提交更改
4、删除操作
DeleteOnSubmit()方法从Table<T>类的实例中删除单个实体,
DeleteAllOnSubmit<TSubEntity>()方法将从 Table<T>类的实例中删除实体的集合。
如下所示:
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();
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<T>类的对象的方法
//给数据库的表添加数据
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<TSubEntity>()将实体的集合添加,它是Table<T>类的对象的方法,它添加的是数据集合,一次添加多个数据记录
//给数据库的表添加数据
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<Score>(scores); //添加一个数据集合
dataContext.SubmitChanges(); //最后一定要提交更改
Console.WriteLine("添加成功!");
添加数据之后,得到的结果如下:
2、查询操作
StudentDataContext dataContext = new StudentDataContext();
IEnumerable<Score> 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<T>类的实例中删除单个实体,
DeleteAllOnSubmit<TSubEntity>()方法将从 Table<T>类的实例中删除实体的集合。
如下所示:
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();
相关文章推荐
- LinQ To SQL 添加、删除、更新C#
- C#操作LINQ to SQL组件进行数据库建模的基本教程
- 双树 节点 C# net Ztree linqtosql 源码
- 译:在C#中使用LINQ To SQL
- C# 3.0, Linq, Linq To Sql(最佳入门)
- C#Winform Linq_to_Sql 实现增删改查功能
- c# LINQ to SQL
- C#改变LInqToSQL的引用地址,读取config的数据库字符串
- c# linq to sql
- C# Linq to SQL — Group by
- c# linq to sql 的基本操作
- c#中Linq to Sql 增删除的实例
- C#用LINQ to SQL把PictureBox中的图片存入数据库和取出数据库中的图片并显示在PictureBox中
- C# 区间合并(Linq To Sql)
- C# Linq to sql 实现 group by 统计多字段 返回多字段
- 使用Linq to SQL实现基本的增、删、改、查及绑定控件(C#)
- 【翻译】Data Access with LINQ to SQL (1) -- New C# and VB.NET Language Features
- c#LINQ to SQL语句
- Linq to SQL --C#ORM框架 入门
- c# Linq to sql 基本查询例子