C#的Linq to SQL

来源:互联网 发布:淘宝店铺联盟在哪里 编辑:程序博客网 时间:2024/05/16 19:22
一、什么是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();







0 0
原创粉丝点击