LinQ to SQL
2015-06-02 15:35
330 查看
一,定义: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)提交
2.删
(1).从数据库中找出来
(2)跟context说一下,提交的时候,删除
(3)提交
3.改
(1)从数据库中找出对象来
(2)把对象的值改一下。
(3)提交送回去。
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);
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);
相关文章推荐
- 把excel数据生成sql insert语句
- MySQL utf8mb4 字符集
- 把excel数据生成sql insert语句
- [SQLite3]connection string的连接池参数引发的错误
- MongoDB学习笔记~自己封装的Curd操作(按需更新的先决条件)
- windows下安装mongodb
- mysql主从不一致解决方法
- 一些oracle知识
- rlwrap-0.37.tar.gz实现sqlplus上下翻页
- 在oracle中,使用sqlldr将文件中的数据导入到数据库
- 删除全部binlog不影响数据库运行,类似Oracle的archivelog
- mysql 的 infobright 数据库的 mediumblob 显示不了数据
- Mac下MySql卸载方法
- mysql清理binlog
- SQLServer中的事务与锁
- 数据库名,数据库实例名SID,数据库服务名,全局数据库名
- 数据库完整性约束
- sql中select语句详解及用途
- SQL Server2008 事务和锁详解
- 两段简单的JS代码防止SQL注入