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

版权声明: https://blog.csdn.net/hemingyang97/article/details/79793391

1.LINQ to SQL概述

    1)LINQTO SQLLINQ中最重要的一个组建,为.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>用来描述实体类中包含的其他实体的集合

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子句:提供一个临时标示符,充当对joingroupselect子句的结果
           八大数据类型

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 表达式

展开阅读全文

没有更多推荐了,返回首页