ASP.NET网站开发

LINQ TO SQL概述

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

使用VS创建DBML


数据上下文

DataContext又称为数据上下文,它为LINQ to SQL提供操作数据库的入口。使用LINQ to SQL操作数据库,首先需要为该数据库创建一个继承自DataContext类的自定义的数据上下文类

执行查询语句的ExecuteQuery()方法
执行非查询语句的ExecuteCommand()方法
提交更改到数据库的SubmitChanges()方法
获取表集合的GetTable()方法
获取以修改对象的GetChangeSet方法,它有3个自读集合
Deletes属性:已从ChangeSet中删除的实体
Inserts属性:已插入到ChangeSet中的实体
Updates属性:已在ChangeSet中更新的实体

例如:

          //实例化dataContext
          LinqDBDataContext db = new LinqDBDataContext();
          //sql语句
          string cmd = "update StuInfo set stuName={0} where stuid=3";
          //执行sql语句
          db.ExecuteCommand(cmd, "星發");
          string sql = "select *from StuInfo where stuid>=2";
          GridView1.DataSource = db.ExecuteQuery<StuInfo>(sql);
          GridView1.DataBind();

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

DeleteAllOnSubmit(TSubEntity)将集合中的所有实体置于Pending delete状态

DeleteOnSubmit()此表中的实体置于ending delete

InsertAllOnSubmit(TSubEntity)将集合中的所有处于Pending insert状态的实体添加到DataContext

InsertOnSubmit()将处于Pending insert状态的实体添加到Table<TEntity>

例如:

//实例化dataContext            
LinqDBDataContext db = new LinqDBDataContext();
//创建一个实体
StuInfo stu = new StuInfo();
将新的角色添加到Table<T>中
stu.stuName = "赵柳";
db.StuInfo.InsertOnSubmit(stu);
//更新到数据库中
db.SubmitChanges();
GridView1.DataSource = db.StuInfo.Where(p => p.stuid == 3).Select(p => p.stuName); 
GridView1.DataBind();
EntitySet<T>用来描述实体类中包含的其他实体的集合
Add()方法能够将元素或实体添加到EntitySet<T>集合末尾
Remove()方法能够从EntitySet<T>中移除指定的元素或实体
RemoveAt()方法能够从EntitySet<T>中移除指定位置处的元素或实体

Contains()方法能够判断在EntitySet<T>中是否包含指定的元素或实体

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

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

LINQ查询:八大基本字句:

from … in子句:指定查询操作的数据源和范围变量
select子句:指定查询结果的类型和表现形式
where子句:筛选元素的逻辑条件,一般由逻辑运算符组成
group … by子句:对查询进行分组
orderby子句:对查询结果进行排序,可以为“升序”或“降序”
join子句:连接多个查询操作的数据源
let子句:引入用于存储查询表达式中的子表达式结果的范围变量

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

简单查询:

            //创建LinqDB上下文实例
            DatalinqDataContext db = new DatalinqDataContext();
            //Linqtosql查询结果
            var res = from i in db.StuInfo where i.stuid < 5 select i;
            //指定数据源
            GridView1.DataSource = res;
            //绑定数据源
            GridView1.DataBind();

复杂查询:

            //创建LinqDB上下文实例
            DatalinqDataContext db = new DatalinqDataContext();
            //Linqtosql查询结果
            var res = from i in db.UserInfo
                      join j in db.UserRole on i.ID equals j.UserID
                      join l in db.Role on j.RoleID equals l.ID
                      where i.ID < 5 && i.Username.Length >= 5
                      orderby i.Username descending
                      select new { i.ID,i.Username,i.RoleName};
            //指定数据源
            GridView1.DataSource = res;
            //绑定数据源
            GridView1.DataBind();

聚合查询:

            //创建LinqDB上下文实例
            DatalinqDataContext db = new DatalinqDataContext();
            //Linqtosql查询结果
            var res = from i in db.Product
                      where i.Price==db.Product.Max<Product>(p=>p.Price)
                      || i.Price == db.Product.Min<Product>(o => o.Price)
                      select new { i.ID, i.Name, i.Price,i.Remark };
            //指定数据源
            GridView1.DataSource = res;
            //绑定数据源
            GridView1.DataBind();

分组查询:


动态数据库支持:

创建动态数据库支持:

网站打开:









猜你喜欢

转载自blog.csdn.net/qq_41851370/article/details/79793258