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

    LinQ to SQL

    LinQ - 集成化查询语言。

    LinQ to SQL ——查询SQLServer数据库
    LinQ to Object —— 查询内存中的集合

    ORM思想:O - R - M
    1. Object 对象——实体类
    2. Relation 关系数据库——数据库中的表
    3. Mapping 映射——把类和表;字段和列对应

    LinQ生成实体类的结构:

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

    一、增

    1.造对象,接收数据
    2.告诉context提交的时候如何操作
    3.context提交

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

    二、删

    1.从数据库中找操作对象出来(注:找出来的是个集合,可以用first()取出第一个
    2.告诉context,提交的时候,执行删除操作
    3.context提交

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

    三、改

    1.从数据库中找出对象来。(注:找出来的是个集合,可以用first()取出第一个
    2.对对象的值进行修改。
    3.提交,送回数据库去。
    注:无需告诉context如何操作,直接提交

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

    四、查

    1. LINQ语句写法(from p in context.Info where p.Sex==true select p;
    2. 扩展方法(context.Info.Where(p=>p.Sex==true);)

    1)基本条件查询:

    等值: p.属性名==value
    不等值:  p.属性名!=value
    逻辑与: p.属性名==value &&  p.属性名==value
    逻辑或: p.属性名==value ||  p.属性名==value
    

    2)模糊查询:

    a.以..开头
    StartsWiths
    b.以..结尾
    EndsWiths
    c.包含
    Contains(value)
    d.指定位置
    Substring(index,length) ==value

    e.链接查询和子查询有语法,但很少写
    直接可使用对象之间的关系对象进行操作,Linq会自动为我们生成出相应的连接语句或子查询语句

    3)排序:

    LinQ语句:
    orderby 属性名 ——升序
    orderby 属性名 descending ——降序

    扩展方法:
    OrderBy()
    OrderByDescending()

    4)统计函数:

    LinQ语句:

    ** //把LinQ语句括起来,调用相应的方法即可 **

    扩展方法:

    Count()
    Sum(p=>p.属性名)
    Average(p=>p.属性名)
    Max(p=>p.属性名)
    Min(p=>p.属性名)

    5)分页查询:

    skip(要跳过的条数).take(要取出来的条件)

    6)集合操作:交、并、差

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

  • 相关阅读:
    时间管理(二):时间管理的六项基本原则
    时间管理(一): 达成目标需重视时间管理
    oracle 工作机制 如何工作的
    如何快速彻底删除 svn checkout出来的文件夹
    win7 安装oracle11g注意事项
    eclipse findbugs does not match outer scope rule: MutexSchedulingRule encounter a pro
    oracle ora12154 无法解析连接字符串
    oracle 动态执行表不可访问 异常处理
    log4j配置
    linux 永久 修改 主机名 ip
  • 原文地址:https://www.cnblogs.com/lovesy2413/p/4545708.html
Copyright © 2011-2022 走看看