ORM《Object Relation Mapping》

Linq To Sql:

一、建立Linq To Sql 类 :
理解上下文类: Linq To Sql 类名+context 利用上下文类可以访问数据库中的每一个表;

****************************************** 分类 应用*******************************************************
注: 1 info为实际引用的表名
2 在执行某一功能时都需要先将上下文类实例化出来。

★★★★★ ★★★★★ ★★★★★ ★★★★★ 一、查询类 ★★★★★ ★★★★★ ★★★★★ ★★★★★ ★★★★★
MyDBdataContext context= new MyDBContext();//将上下文类实例化
1 查询所有并显示
MyDBdataContext context= new MyDBContext();//将上下文类实例化
list<info> list = context.info.tolist(); //执行查询操作;
DataGridView1.DataSouse = list; //将查询到的数据显示出来
2 单条件查询--等值查询
var mama = from p in context. info where p.code == "n002" select p // 查询方式一
var mama = context.info where (p=>p.code=="n002"); //查询方式二 lambda 表达式

dataGridview1.datasouce = mama // 送至页面显示;
3 单条件查询----不等值查询
var mama = from p in context.info where p.code !="n002" select p //法一
var mama = context.info where (p=>p.code !=n002); // 法二 lambda 表达式
var mama = context.info where( p => datatime.now - p.birthday.values.year); // 时间的提取方法

dataGridview1.datasouce = mama // 送至页面显示;
4 多条件查询:
//var query = from p in _Context.Info where p.Sex == true && p.Birthday.Value.Year > 1985 select p; //法一
//var query = _Context.Info.Where(p=>p.Sex==true && p.Birthday.Value.Year>1985); 法二 lanbda 表达式
var query = _Context.Info.Where(p => p.Sex == true).Where(p=>p.Birthday.Value.Year>1985) ; //多条件逻辑与可以用链式表达式写
dataGridView1.DataSource = query;
5 模糊查询:
var mama = from p in context.info where p.name contains("张") selsect p ;// 相当于 like'%张%' 模糊查询--包含什么字符的信息
//var query = from p in _Context.Info where p.Name.StartsWith("张") select p; // like '张%' 模糊查询--以什么字符开头的信息

//var query = from p in _Context.Info where p.Name.EndsWith("张") select p; //like '%张' 模糊查询--以什么字符结尾的信息
//var query = from p in _Context.Info where p.Name.Substring(1,1) == "张" select p;// like '_张%' 模糊查询-- 一第几位是什么字符的信息

var query = _Context.Info.Where(p => p.Name.StartsWith("张"));
6 集合操作:
var q1 = from p in _Context.Info where p.Sex== true select p;
var q2 = _Context.Info.Where(p => p.Birthday.Value.Year > 1985);

交集 : var query = q1.Intersect(q2);
并集 : var query = q1.Union(q2);
差集 : var query = q2.Except(q1);
7 统计函数:

var query = _Context.Info.Where(p => p.Birthday.Value.Year > 1985);
//this.Text = query.Count().ToString(); // 求数量
//this.Text = query.Sum(p=>DateTime.Now.Year - p.Birthday.Value.Year).ToString(); //求和
//this.Text = query.Average(p => DateTime.Now.Year - p.Birthday.Value.Year).ToString();//求平均值
//this.Text = query.Max(p => DateTime.Now.Year - p.Birthday.Value.Year).ToString() ; // 求最大值
this.Text = query.Min(p => DateTime.Now.Year - p.Birthday.Value.Year).ToString(); // 求最小值

7 转化操作:
var mama = from p in context.info where p.name contains "张" select p;

List<info> list = mama.ToList(); // 将查询结果转化为泛型集合:
info[] list = mama.ToArray(); // 将查询结果转化为数组;
info data = mama.tosingle(); // 将查询结果转化为单个对象
info data= mama.tofirst(); // 将查询结果转化为单个对象

8 将查询结果 分页操作
//每页多少条pagesize,要找第几页pageno
var query = _Context.Info.Skip(2*3).Take(2); // 从查询结果中skip(跳跃)2行 每行3条记录 要取跳跃后的 2 行;

dataGridView1.DataSource = query;
9 特殊用法记录
1 去除查询中的重复语句: var mama = from p in convert.info where p.name contains "张"select p .distinct() ;

★★★★★ ★★★★★ ★★★★★ ★★★★★ 二 、添加类 ★★★★★ ★★★★★ ★★★★★ ★★★★★ ★★★★★
添加操作:
MyDBdataContext context= new MyDBContext();//将上下文类实例化
info data = new info();// 将要添加的表格先实例化;
data.Code = txtCode.Text; // 进行初始化
data.Name = txtName.Text;
data.sex =Convert.Toboolean(textsex.text);
data.nation =txtNation.Text;
data.Birthday = Convert.TodateTime(textBirthday.Text);

Context.info.insertOnSubmit(data ); //告知上下文类在点击提交的时候执行插入操作;

Context.SubmitChanges(); // 上下文提交到数据库

★★★★★ ★★★★★ ★★★★★ ★★★★★三、删除类 ★★★★★ ★★★★★ ★★★★★ ★★★★★ ★★★★★
删除操作
// 通过上下文类找到要删除的对象
MyDBdataContext context= new MyDBContext();//将上下文类实例化
var sc = from mama in context.info where mama.Code select mama;
if(sc.count() >0)
info data = sc.first();
// 告诉上下文一下
Context.info.delectOnsubmit(data);
// 上下文类提交到数据库
Context.SubmitChangs();

★★★★★ ★★★★★ ★★★★★ ★★★★★四 、修改类 ★★★★★ ★★★★★ ★★★★★ ★★★★★ ★★★★★
修改操作
MyDBdataContext context= new MyDBContext();//将上下文类实例化
//找到要修改的数据
var tianjia = from mama in Context.info where p.code == txtcode.text select mama
// 修改数据
data.Name = txtName.Text;
data.Sex = Convert.ToBoolean(txtSex.Text);
data.Nation = txtNation.Text;
data.Birthday = Convert.ToDateTime(txtBirthday.Text);
// 上下文类提交到数据库
Context.Submitchanges();

linq to sql 增删改查的更多相关文章

  1. Linq to sql 增删改查(转帖)

    http://blog.csdn.net/pan_junbiao/article/details/7015633   (LINQ To SQL 语法及实例大全) 代码 Code highlightin ...

  2. linq的简单增删改查

    Linq高集成化的数据访问类,它会自动映射数据库结构,将表名完整映射成为类名,将列名完整映射成字段名数据库数据访问,能大大减少代码量.(反正最后结果就是不用写ado.Net那一套增删改查,有一套封装好 ...

  3. [原创]Linq to xml增删改查Linq 入门篇:分分钟带你遨游Linq to xml的世界

    本文原始作者博客 http://www.cnblogs.com/toutou Linq 入门篇(一):分分钟带你遨游linq to xml的世界 本文原创来自博客园 请叫我头头哥的博客, 请尊重版权, ...

  4. 表结构修改以及sql增删改查

    修改表结构 修改表名 alter table 表名 rename 新名 增加字段 alter table 表名 add 字段名 数据类型 约束 删除字段 alter table 表名 drop 字段名 ...

  5. sql增删改查封装

    App.config文件 <?xml version="1.0" encoding="utf-8" ?> <configuration> ...

  6. sql增删改查-转载

    一.增:有2种方法 1.使用insert插入单行数据: 语法:insert [into] <表名> [列名] values <列值> 例:insert into Strdent ...

  7. SQL增删改查

    1.增 INSERT INTO table_name VALUES (value1, value2,....) INSERT INTO table_name (列1, 列2,...) VALUES ( ...

  8. Linq to XML 增删改查

    Linq to XML同样是对原C#访问XML文件的方法的封装,简化了用xpath进行xml的查询以及增加,修改,删除xml元素的操作.C#访问XML文件的常用类:XmlDocument,XmlEle ...

  9. SQL 增删改查(具体)

    一.增:有3种方法 1.使用insert插入单行数据: insert [into] <表名> [列名] values <列值> insert into Strdents (na ...

随机推荐

  1. PowerDesigner 业务处理模型( BPM ) 说明 及Enterprise Architect使用教程

    http://www.cnblogs.com/springside-example/archive/2011/10/17/2529640.html http://wenku.baidu.com/lin ...

  2. jquery 禁止页面滚动-移动端

    禁止 window.ontouchmove=function(e){        e.preventDefault && e.preventDefault();        e.r ...

  3. atprogram.exe : Atmel Studio Command Line Interface

    C:\Program Files\Atmel\Atmel Studio 6.1\atbackend\atprogram.exe No command specified.Atmel Studio Co ...

  4. Java数据结构之树和二叉树

    从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ Java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...

  5. Codeforces Gym 100531D Digits 暴力

    Problem D. Digits 题目连接: http://codeforces.com/gym/100531/attachments Description Little Petya likes ...

  6. 在C#中使用全局鼠标、键盘Hook

    今天,有个同事问我,怎样在C#中使用全局钩子?以前写的全局钩子都是用unmanaged C或C++写个DLL来实现,可大家都知道,C#是基于.Net Framework的,是managed,怎么实现全 ...

  7. UVA 573 (13.08.06)

     The Snail  A snail is at the bottom of a 6-foot well and wants to climb to the top.The snail can cl ...

  8. 源码级分析Android系统启动流程

    首先看一下Android系统的体系结构,相信大家都不陌生 1.首先Bootloader引导程序启动完Linux内核后,会加载各种驱动和数据结构,当有了驱动以后,开始启动Android系统,同时会加载用 ...

  9. 现有一些开源ESB总线的比較

    现有的开源ESB总线中,自从2003年第一个开源总线Mule出现后,如今已经是百花争鸣的景象了.如今我就对现有的各种开源ESB总线根据性能.可扩展性.资料文档完整程度以及整合难易程度等方面展开. 一. ...

  10. oc-16-set,get方法

    S.h #import <Foundation/Foundation.h> /** 解决方案: 1.不用@public修饰 2.我们对象有访问和设置成员变量的两种操作 1>设置值 p ...