LINQ TO SQL

LINQ TO SQL

    LINQ TO SQL是LINQ中最重要的一个组建,为.NET Framework3.5及以上版本所支持,它可以为关系数据库提供一个对象模型。

    LINQ TO SQL最重要的一个功能就是为数据库创建一个对象模型(由基于.NET框架的类组成),并将该对象模型映射到数据库中的相应对象。

LINQ TO SQL对象模型和SQL Server数据哭中的对象的映射关系如表1所示。

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

DataContext类的方法

        (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>类型的结果

        使用Table<T>能够方便的操作数据库中的数据。

  •   DeleteAllOnSubmit(TSubEntity)将集合中的所有实体置于Pending delete状态
  •   DeleteOnSubmit()此表中的实体置于ending delete
  •   InsertAllOnSubmit(TSubEntity)将集合中的所有处于Pending insert状态的实体添加到Table<Tentity>    

 示例:如图3所示。


图3


处理EntitySet<T>类型元素的结果

        EntitySet<T>用来描述实体类中包含的其他实体的集合

  •     Add()方法能将元素或实体添加到EntitySet<T>集合末尾
  •     Remove()方法能够从EntitySet<T>中移除指定的元素或实体
  •     RemoveAt()方法能够从EntitySet<T>中移除指定位置处的元素或实体
  •     Contains()方法能够判断在EntitySet<T>中是否包含指定的元素或实体  

    Add()方法  示例:如图4所示。


图4

Remove()方法示例:如图5所示。


图5

处理EntityRef<T>类型的结果

        EntityRef<T>处理一对多关系中的数据       

处理ISingleResult<T>类型的结果

        ISingleResult<T>泛型接口表示具有单个返回序列的映射函数的结果

查询数据库中的数据

        from...in子句:指定查询操作的数据源和范围变量

        select2子句:指定查询结果的类型和表现形式

        where子句:筛选元素的逻辑条件,一般由逻辑元算符组成

        group...by子句:对查询进行分组

        orderby子句:对查询结果进行排序,可以为“升序”或“降序”

        join子句:连接多个查询操作的数据源

        let子句:引入用于存储查询表达式中的子表达式结果的范围变量

        into子句:提供一个临时标示符,充当对join、group或select子句的结果