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

ASP.NET网站开发 专栏收录该内容
31 篇文章 2 订阅

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>用来描述实体类中包含的其他实体的集合

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

  • 1
    点赞
  • 0
    评论
  • 1
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:书香水墨 设计师:CSDN官方博客 返回首页

打赏作者

hemingyang97

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值