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);

  • 相关阅读:
    leetcode33. Search in Rotated Sorted Array
    pycharm 设置sublime text3 monokai主题
    django class Meta
    leetcode30, Substring With Concatenation Of All Words
    Sublime text3修改tab键为缩进为四个空格,
    sublime text3 python打开图像的问题
    安装上imesupport输入法依然不跟随的解决办法,
    sublime text3 的插件冲突弃用问题,
    sublime text3 BracketHighlighter括号匹配的设置
    windows 下wget的使用
  • 原文地址:https://www.cnblogs.com/William-1234/p/4546628.html
Copyright © 2011-2022 走看看