您的位置:首页 > 数据库

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("添加成功!");
          添加之后,我们可以查看自己的数据库的数据表,结果如下:
        


  
      (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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C# Linq to SQL 数据库