Link To Sql简单

Linq及其扩展

Linq是一种数据查询语言(它能够从多种数据源中查询数据). 现在基于Linq的扩展有:

  1. Linq To Object:主要是从内存对象中查询数据
  2. Linq To Sql:主要是从MS Sql Server数据库中操纵(查询\新增\修改\删除)数据
  3. Linq To XML:主要是从XML片段或XML文档中查询数据

Linq To Sql简介

Linq To Sql是一个微软在.NET Framework 3.5中推出的一款ORM(Object  Relation  Model)实体框架.一个好的实体框架除了能够将数据表映射为实体类,还应该支持使用面向的思想去操纵关系型数据库.现在比较流行的ORM框架包括:Linq To Sql\Entity Framework\Nhibernate等.

我们在使用Linq To Sql的过程中,很少去手写SQL语句就能实现常见的数据增删改差操作.但是它的底层实现仍然是Ado.net.那么如何检测Linq To Sql生成的SQL语句呢?通过DataContext的Log属性即可实现检测功能.

Linq To Sql设计器

在服务器资源管理器中通过拖拽的方式,将数据表放置到Linq To Sql的设计器区域后,VS会自动将这些数据表生成N+1(N为数据表的个数)个类.这些类大致可以分为2种:一种是数据库上下文,另一种是实体类.数据库上下文类就是名称以DataContext结尾的类,它继承自Sytem.Data.Linq.DataContext.

他们的作用分别是:DataContext类用于和数据库交互(增删改查),每次进行数据库操作时,都应该先创建该类对象;

而每一个实体类则和数据表相对应.

DataContext的特性标记为Database,表示与数据库相关

实体类的特性标记是Table,表示与数据表相关

实体类中属性的特性标记是Column,表示与数据列相关

DataContext数据库上下文类的常用属性和方法

CreateDatabase():创建数据库

DeleteDatabase():删除数据库

DatabaseExits():判断数据库是否存在

Log:该属性用于检测和写入LINQ TO SQL生成的SQL语句

Linq To Sql常用操作

新增数据

void  InsertOnSubmit():实现每次新增1条记录

void  InsertAllOnSubmit():实现一次新增多条记录

注意:调用InsertOnSubmit后,一定要再调用DataContext.SubmitChanges();

修改数据

首先,查询到要修改的元素

其次,改变元素相应的属性

最后,调用dataContext.SubmitChanges()

删除数据

首先,查询到要删除的元素

其次,调用void DeleteOnSubmit()删除单个元素,如果要删除多个可以调用void DelteAllOnSubmit()

最后,调用dataContext.SubmitChanges();

数据查询

数据查询时,有2种常用的使用方式.一种是使用linq的标准语法;一种是使用Lambda表达式扩展方法.

单表查询:

多表查询:

典型应用场景

场景1:在一个页面中实现:添加一个工资模版,以及该工资模版的多个工资条目

做法一:

做法二:

上述两种做法都可以实现功能.做法一是先实现工资模版的新增,然后再新增工资条目.做法二是向工资模版对象中添加多个工资条目,然后向数据库提交工资模版.

需要注意的是,做法一中为工资条目对象设置了工资模版ID,而做法二并没有为工资条目设置工资模版ID.但为什么最后效果却是一样的呢?

因为我们将工资条目添加到工资模版对象中时,linq to sql会自动将主外键关系的字段赋值.

场景二:使用Linq To Sql进行分页

分页功能需要使用两个函数进行组合:Skip()和Take()

Skip(int count):跳过count条数据

Take(int count):从开始位置提取count条记录

分页查询: dataContext.XXX.Skip(pageIndex * pageSize).Take(pageSize)

pageIndex是要提取的第几页记录.pageIndex >= 0

pageSize是每页显示的记录条数

其他

  • EntitySet<T>:该类表示数据实体的集合
  • System.Data.Linq.Table<T>:该类表示数据表对象
  • 如何判定通过Linq To Sql进行数据的修改\删除\新增是否成功?

因为InsertOnSubmit方法和DataContext.SubmitChanges()方法都没有任何返回值,所以无法通过他们判断出是否操作成功.判断的标准就是:如果不抛出异常就成功,抛出异常肯定就失败了.

  • 对于标识列(自动生成列)而言,在调用DataContext.XXX.InsertOnSubmit()后是无法获取标识列的值的;只有在调用DataContext.SubmitChanges()后方能获取标识列的值.
时间: 2024-08-06 07:58:31

Link To Sql简单的相关文章

Linq to SQL 简单增删改查

Linq to SQL 简单增删改查 用Linq大大减少了对数据库的一般操作所需的编码量. 运行下面事例之前,首先建一个叫做Alien的数据库表. CREATE TABLE [dbo].[Aliens](    [Id] [int] IDENTITY(1,1) NOT NULL primary key,    [Name] [nchar](10) NULL,) 建一个console项目,在项目里添加一个Linq To Sql类文件(.dbml以及两个附属文件),把Alien表从服务器资源管理器拖

SQL 简单练习

USE study; SELECT * FROM EMP --查询雇员姓名的最后三个字母 SELECT ename,right(ename,3) FROM EMP ; --查询10部门雇员进入公司的星期数 SELECT ename,datename(month,hiredate) from EMP where deptno =10 --1 查询部门30中的所有员工 SELECT * FROM EMP WHERE deptno=30 --2 列出所有办事员(CLERK)的姓名,编号和部门编号 SE

SQL简单使用-进阶篇

与上一篇的<SQL简单使用-基础篇>相连续的篇章,<SQL简单使用-基础篇>以下简称<基础篇>.在<基础篇>中,主要简单的带大家了解一下SQL命令中最主要的增删改查命令的使用,增INSERT INTO.删DETELE/DROP/TRUNCATE.改UPDATE.查SELECTE.因为增删改查是SQL命令的核心也是最基础的部分,所以本篇张还是围绕增删改查的使用进行进阶性的介绍与使用. 先从<基础篇>中提到的where子句里面的通配符讲起. 1.li

Oracle笔记 六、PL/SQL简单语句块、变量定义

1.简单SQL语句,HellWorld示例 --输出信息 begin dbms_output.put_line('Oracle Hello World!'); end;   2.变量的定义.使用 --定义变量 declare sName varchar2(20); begin sName := 'jack'; dbms_output.put_line(sName); end; --常用类型 declare sNum number(1); sCount binary_integer := 0; s

sql 简单查询,限定查询及排序

SQL(structured Query Language  结构化查询语言)是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库系统. SQL语言包含4个部分: ※数据定义语言(DDL),例如:CREATE.DROP.ALTER等语句. ※数据操作语言(DML),例如:INSERT.UPDATE.DELETE语句. ※数据查询语言(DQL),例如:SELECT语句. ※数据控制语言(DCL),例如:GRANT.REVOKE.COMMIT.ROLLBACK等语句. 简单查询

spark sql简单示例

运行环境 集群环境:CDH5.3.0 具体JAR版本如下: spark版本:1.2.0-cdh5.3.0 hive版本:0.13.1-cdh5.3.0 hadoop版本:2.5.0-cdh5.3.0 spark sql的JAVA版简单示例 spark sql直接查询JSON格式的数据 spark sql的自定义函数 spark sql查询hive上面的表 import java.util.ArrayList; import java.util.List; import org.apache.sp

sql简单存储过程分享

很多程序员朋友都视sql为洪湖水猛兽,其实深入分析一下,多用些时间与耐心,sql还是可以理解的. 本文主要是针对刚刚接触sql的新手朋友,进行一个sql存储过程的简单分享. 小子第一次发布文章,也是借鉴各位前辈的结晶所得,发布本文的目的也是希望帮助更多想要学习数据库的人. 文章开始 首先要了解什么是存储过程? 存储过程就是作为可执行对象存放在数据库中的一个或多个sql命令. 通俗来讲:存储过程其实就是能完成一定操作的一组sql语句. 存储过程的优势:1.存储过程只在创造时进行编译,以后每次执行存

Spark的Streaming和Spark的SQL简单入门学习

1.Spark Streaming是什么? a.Spark Streaming是什么? Spark Streaming类似于Apache Storm,用于流式数据的处理.根据其官方文档介绍,Spark Streaming有高吞吐量和容错能力强等特点.Spark Streaming支持的数据输入源很多,例如:Kafka.Flume.Twitter.ZeroMQ和简单的TCP套接字等等.数据输入后可以用Spark的高度抽象原语如:map.reduce.join.window等进行运算.而结果也能保存

PL/SQL简单实现数据库的连接

通常我们都会去选择 通过修改配置文件去实现数据库链接,方法如下:找到你orale 安装下的文件:instantclient_11_2\network\admin 修改的主要有三个地方:上面的命名随便起,而ip地址,端口和数据库名都需要配置 这些配置好之后,就能在登陆界面找到你的命名的选项. 当然还有更简单的方法:直接在登陆页面配置信息如下 前面是ip地址,1521端口号,/后面是数据库名称.注意格式哦