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. opennebula 创建模板【配置集群、配置VNC、配置RAW、配置SSH】

    { "vmtemplate": { "NAME": "bbbb", "MEMORY": "512", ...

  2. 单步运行linux kernel ?

    如果能给linux kernel打log,如果能单步运行,如果能像普通应用程序那样,step by step的查看程序跑哪里了.. 该多好?这是一个梦想,但从未实现过:因为那是kernel,不是应用程 ...

  3. WEB前端性能优化小结

    转:http://www.gafish.net/archives/1514 对前端开发工程师来说,前端性能优化的重要性是不言而喻的,最为大家所知的是YSLOW的23条优化规则,在我的理解中,性能优化不 ...

  4. Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1

    3.Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1 http://blog.csdn.net/sunbow0 ...

  5. C++头文件中预编译宏的目的

    C++头文件中预编译宏的目的 eg: #ifndef _FACTORY_H_#define _FACTORY_H_......#endif //~_FACTORY_H_ 防止头文件被重复包含,导致变量 ...

  6. hdu 5272 Dylans loves numbers 水题

    Dylans loves numbers Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem. ...

  7. SVM-支持向量机算法概述

    (一)SVM的背景简单介绍 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出很多特有的优势,并 ...

  8. FluorineFx对于现有站点的配置

    step 1:新建一个FluorineFX网站,作为参考 step 2:在现有网站添加FluorineFX网站的相关dll引用,并拷贝console.aspx和gateway.aspx至网站根目录(最 ...

  9. 【JavaScript】Understanding callback functions in Javascript

    Callback functions are extremely important in Javascript. They’re pretty much everywhere. Originally ...

  10. android自定义TabWidget样式

    先看看效果图吧,个人觉得图标丑了点,不过还行,自己用PS做的 下面是全部代码和流程,一定要按流程顺序来,不然错误! 1.tabhost.xml <TabHost xmlns:android=&q ...