zoukankan      html  css  js  c++  java
  • LinQ to SQL

    一,定义:LINQ TO SQL 是包含在.NET Framework 3.5 版中的一种 O/RM 组件(对象关系映射),O/RM 允许你使用 .NET 的类来对关系数据库进行建模。然后,你可以使用LINQ对数据库中的数据进行查询、更新、添加、删除。

    LinQ生成实体类的结构:
    1.生成一个DataContext类。相当于程序内存和硬盘数据库之间的桥梁。
    2.生成一系列的实例类,与表是一一对应的。
    3.每个实体类中都有与表中列相应的属性(值类型的属性都是可以为空的类型bool? int? double?)
    4.数据库中表和表之间的关联关系,被转化成内存中类中的成员变量。

    二,操作

    1.增

    (1)造实体对象

    (2)跟context说一声

    (3)提交

     //创建内存对象与数据库之间的桥梁
            MyDBDataContext context = new MyDBDataContext();
    
            //第一步:造实体对象
            Info data = new Info();
            data.Code = "p101";
            data.Name = "张飞";
            data.Sex = true;
            data.Nation = "n001";
            data.Birthday = new DateTime(1990, 3, 15);
    
            //第二步:跟Context说一下,提交的时候对它执行插入操作
            context.Info.InsertOnSubmit(data);
    
            //第三步:提交
            context.SubmitChanges();

    2.删

    (1).从数据库中找出来
    (2)跟context说一下,提交的时候,删除
    (3)提交

            //创建内存对象与数据库之间的桥梁
            MyDBDataContext context = new MyDBDataContext();
    
            //第一步:找出要删除的对象。
            //var query = from p in context.Info where p.Code == "p101" select p;
            var query = context.Info.Where(p => p.Code == "p101");
            Info data = query.First();
           
            //第二步:跟Context说一下,提交的时候把这个对象给删掉。
            context.Info.DeleteOnSubmit(data);
            //第三步:提交
            context.SubmitChanges();

    3.改

    (1)从数据库中找出对象来
    (2)把对象的值改一下。
    (3)提交送回去。

     //创建内存对象与数据库之间的桥梁
            MyDBDataContext context = new MyDBDataContext();
    
            //第一步:从数据库找出对象来
            var query = context.Info.Where(p=>p.Code == "p009");
            Info data = query.First();
    
            //第二步:改
            data.Name = "田七";
            data.Sex = false;
    
            //第三步:提交
            context.SubmitChanges();

    4.查

    (1)无条件 即查所有

    var query=context.info;

    (2)有条件

    I,单个条件

    var q1 = context.Info.Where(p => p.Nation != "n001");

    II,多个条件

    var query = context.Info.Where(p=>p.Nation1.Name=="汉族").Where(p=>p.Sex==true);

    var query = context.Info.Where(p=>p.Nation1.Name=="汉族" && p.Sex == true);

    III,模糊查询

    var query = from p in context.Info where p.Birthday < new DateTime(1990, 1, 1) select p;  //查询生日小于1990,1,1的数据
    var query = from p in context.Work where p.Firm.Contains("青") select p;   //查询工作单位里面有“青”字的数据
    var query = from p in context.Work where p.Firm.StartsWith("中国") select p;  //查询工作单位以“中国”开头的数据
    var query = from p in context.Work where p.Firm.EndsWith("行") select p; //查询工作单位以“行”结尾的数据
    var query = from p in context.Work where p.Firm.Substring(1, 1) == "国" select p; //查询工作单位第二个字是“国”的数据

    IV,升序降序查询

    var query = from p in context.Work orderby p.StartDate select p;   //升序
    var query = from p in context.Work orderby p.StartDate descending select p;  //降序

    var query = context.Info.OrderBy(p=>p.Birthday);   //升序
    var query = context.Info.OrderByDescending(p=>p.Birthday);   //降序

    V,统计函数。
    把LinQ语句括起来,调用相应的方法即可
    Count()
    Sum(p=>p.属性名)
    Average(p=>p.属性名)
    Max(p=>p.属性名)
    Min(p=>p.属性名)

    VI,取集合第一个对象——First()


    VII,分页查询:
    skip(要跳过的条数).take(要取出来的条件)

    5.集合操作

    var q1 = context.Info.Where(p => p.Nation != "n001");
    var q2 = context.Info.Where(p => p.Sex == true);

    交集:var query = q1.Intersect(q2);
    并集:var query = q1.Union(q2);
    差集:var query = q1.Except(q2);

  • 相关阅读:
    [POI2014]KUR-Couriers
    [题解向] Luogu4092 [HEOI2016/TJOI2016]树
    [探究] OI中各种初级数论算法相关
    [SCOI2005]骑士精神
    [intoj#7]最短距离
    数列分块入门
    动态规划问题基础
    Luogu P1967 货车运输
    Luogu P3379 【模板】最近公共祖先(LCA)
    Luogu P3378 【模板】堆
  • 原文地址:https://www.cnblogs.com/William-1234/p/4546628.html
Copyright © 2011-2022 走看看