LINQ TO SQL是LINQ中最重要的一个组建,为.NET Framework3.5及以上版本所支持,它可以为关系数据库提供一个对象模型。
LINQ TO SQL最重要的一个功能就是为数据库创建一个对象模型(由基于.NET框架的类组成),并将该对象模型映射到数据库中的相应对象。
LINQ TO SQL对象模型和SQL Server数据哭中的对象的映射关系如表1所示。
LINQ TO SQL对象模型的基本元素 | SQL Server数据库中的对象 |
实体类 | 表 |
属性或字段 | 列 |
关联 | 外键关系 |
方法 | 存储过程或函数 |
使用SQL Server数据库Stumarks介绍LINQ TO SQL对象模型和SQL Server数据库中的对象的映射关系。如图2所示。
图2
DataContext又称为上下文,它为LINQ TO SQL提供操作数据库的入口。使用LINQ TO SQL 操作数据库,首先需要为该数据库创建一个继承自DataCountext类的自定义的数据库上下文类。
示例:如图1所示。
图1
(1)执行SQL命令的ExecuteCommand()方法。
(2)执行SQL查询的ExecuteQuery()方法。
(3)提交更改到数据库的SubmitChanges()方法。
(4)获取表集合的GetTable()方法。
(5)获取已修改对象的GetChangeSet()方法。
GetChangeSet()方法能够获取被修改的对象。它返回由3个只读集合(Inserts、Deletes和Updates)组成的对象。GetChangeSet()方法返回值的类型为ChangeSet,由3个只读集合(Inserts、Deletes和Updates)组成。ChangeSet类包含一下3个属相。
Deletes属性,已从ChangeSet中删除的实体。
Inserts属性,已插入到ChangeSet中的实体。
Updates属性,已在ChangeSet中更新的实体。
使用Table<T>能够方便的操作数据库中的数据。
示例:如图3所示。
图3
EntitySet<T>用来描述实体类中包含的其他实体的集合
Add()方法 示例:如图4所示。
图4
Remove()方法示例:如图5所示。
图5
EntityRef<T>处理一对多关系中的数据
ISingleResult<T>泛型接口表示具有单个返回序列的映射函数的结果
from...in子句:指定查询操作的数据源和范围变量
select2子句:指定查询结果的类型和表现形式
where子句:筛选元素的逻辑条件,一般由逻辑元算符组成
group...by子句:对查询进行分组
orderby子句:对查询结果进行排序,可以为“升序”或“降序”
join子句:连接多个查询操作的数据源
let子句:引入用于存储查询表达式中的子表达式结果的范围变量
into子句:提供一个临时标示符,充当对join、group或select子句的结果