ASP.NET------LINQ to SQL

1.LINQ to SQL概述

    1) LINQTO SQL LINQ 中最重要的一个组建,为 .NET Framework3.5 及以上版本所支持,它能够为关系数据库提供一个对象模型。
    2) LINQTO SQL 最重要的一个功能就是为数据库建立一个对象模型(由基于 .NET 框架的类组成),并将该对象模型映射到数据库中的相应对象。

2.使用vs2010 建立DBML




3.数据上下文

       DataContext 又称为数据上下文,它为 LINQ to SQL 提供操做数据库的入口。使用 LINQ to SQL 操做数据库,首先须要为该数据库建立一个继承自 DataContext 类的自定义的数据上下文类。
       执行查询语句的 ExecuteQuery () 方法
       执行非查询语句的 ExecuteCommand () 方法
       提交更改到数据库的 SubmitChanges () 方法
       获取表集合的 GetTable () 方法
       获取以修改对象的 GetChangeSet 方法,它有 3 个自读集合
       Deletes 属性 : 已从 ChangeSet 中删除的实体
       Inserts 属性 : 已插入到 ChangeSet 中的实体
       Updates 属性 : 已在 ChangeSet 中更新的实体

4.处理Table<T>类型结果

 
4.1使用Table<T>可以方便的操做数据库中的数据
1)DeleteAllOnSubmit(TSubEntity)将集合中的全部实体置于Pending delete状态
2)DeleteOnSubmit()此表中的实体置于ending delete
3)InsertAllOnSubmit(TSubEntity)将集合中的全部处于Pending insert状态的实体添加到DataContext
4)InsertOnSubmit()将处于Pending insert状态的实体添加到Table<TEntity>
例:      LinqDBDataContext DB = new LinqDBDataContext();
Role role = new Role() { RoleName = "水军" };
DB.Role.InsertOnSubmit(role);
            DB.SubmitChanges();//只改变Table<T>中T的状态,并无真正的将数据操做的结果写入到数据库中;提交到数据库必须调用相应数据库上下文的SubmitChanages()方法

            Response.Write("添加后角色个数:" + DB.Role.Count());

5.处理EntitySet<T>类型结果

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

1) Add() 方法可以将元素或实体添加到 EntitySet <T> 集合末尾
2) Remove() 方法可以从 EntitySet <T> 中移除指定的元素或实体
3) RemoveAt () 方法可以从 EntitySet <T> 中移除指定位置处的元素或实体
4) Contains() 方法可以判断在 EntitySet <T> 中是否包含指定的元素或实体
例:            //建立linqDB上下事例
            LinqDBDataContext DB = new LinqDBDataContext();
            //获取用户名Product
            EntitySet<Product> productInfo = DB.UserInfo.First().Product;
            //显示当前数量
            Response.Write("删除前的数量:" + productInfo.Count + "<br />");
            //移除最后一
            productInfo.RemoveAt(productInfo.Count - 1);
            //映射到数据库中
            DB.SubmitChanges();
            //打印删除后的数量
            Response.Write("删除后的数量:" + productInfo.Count + "<br />");

6.处理EntityRef 的结果

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


7.查询数据库中的数据

1) from… in 子句:指定查询操做的数据源和范围变量
2) select 子句:指定查询结果的类型和表现形式
3) where 子句:筛选元素的逻辑条件,通常由逻辑运算符组成
4) group… by 子句:对查询进行分组
5) orderby 子句:对查询结果进行排序,能够为“升序”或“降序”
6) join 子句:链接多个查询操做的数据源
7) let 子句:引入用于存储查询表达式中的子表达式结果的范围变量
8) into 子句:提供一个临时标示符,充当对 join group select 子句的结果
           八大数据类型

8.简单查询

简单查询、聚合查询、分组查询、复杂查询

//建立linqdb上下文事例
            LinqDBDataContext DB = new LinqDBDataContext();
            //建立linqdb上下文事例
            var query = from user in DB.UserInfo
                        where user.ID < 5
                        select user;
            //指定数据源
            GridView1.DataSource = query;
            //绑定数据源
            GridView1.DataBind();

9.聚合查询

          
//建立linqdb上下文事例
            LinqDBDataContext DB = new LinqDBDataContext();
            var query = from product in DB.Product
                        where product.Price == DB.Product.Max(p => p.Price)
                        select product;
            
            GridView1.DataSource = query;
            GridView1.DataBind();

10.复杂查询

//建立linqdb上下文事例
            LinqDBDataContext DB = new LinqDBDataContext();
            //建立linqdb上下文事例
            var query = from user in DB.UserInfo
                        join role in DB.UserRole on user.ID equals role.UserID
                        where user.ID < 5 && user.Username.Length >= 3
                        select new { ID = user.ID, Name = user.Username, Role = role.Role.RoleName };
            //指定数据源
            GridView1.DataSource = query;
            //指定数据源
            GridView1.DataBind();

11.分组查询

//建立linqdb上下文事例
            LinqDBDataContext DB = new LinqDBDataContext();
            //linq分组
            var query = from res in
                            (from user in DB.UserInfo
                             join order in DB.Order on user.ID equals order.UserId
                             select new { ID = user.ID, Name = user.Username }
                             )
                        group res by res.ID;

            foreach (var item in query)
            {
                //建立Gv
                GridView gridView = new GridView();
                gridView.DataSource = item;
                gridView.DataBind();
                //添加html元素
                Page.Form.Controls.Add(gridView);
            }

12.动态数据库支持


选用ASP.NEToynaic data linq to sql 网站框架

动态数据类型
大数据

13.Lambda 表达式网站

Lambda 表达式
spa