ASP.NET网站开发中的LINQ to SQL与数据上下文

一、LINQ TO SQL概述

1.LINQ TO SQL 是LINQ中最重要的一个组建,为.NET Framework3.5及以上版本所支持,它可以为关系数据库提供一个对象模型,并在该对象模型基础上实现对数据的查询、添加、修改、删除等功能。

2.LINQ TO SQL 最重要的一个功能就是为SQL Server数据库创建一个对象模型(由基于.NET框架的类组成),并将该对象模型映射到SQL Server数据库中相应的对象(如表、列、外键关系、存储过程、函数等)。其中,LINQ TO SQL类映射到SQL Server数据库中的表,这些LINQ to SQL类被称为“实体类”。

LINQ to SQL对象模型和SQL Server数据库中的对象映射关系
LINQ to SQL对象模型的基本元素SQL Server数据库中的对象
实体类
属性或字段
关联外键关系
方法存储过程或函数







二、数据上下文

DataContext又称为数据上下文,它为LINQ to SQL提供操作数据库的入口。如果使用LINQ to SQL操作数据库,则首先需要为该数据库创建一个继承于DataContext类的自定义的数据上下文类,并在该类中定义表,以及操作数据的方法等。

1.DataContext概述

     DataContext类是一个LINQ to SQL类,它充当SQL Server数据库与映射到该数据库的LINQ to SQL实体类之间的通道,它包含用于连接数据库以及操作数据数据的连接字符串信息和方法。用户可以调用其SubmitChanges()方法将所有更改提交到数据库。

2.DataContext属性

连接属性Connection:可以获取DataContext类的实例的连接(类型为DbConnection)。

事务属性Transaction:为DataContext类的实例设置访问数据库的事务。

执行命令的最大时间属性CommandTimeout:可以设置或获取DataContext类的实例的查询数据库操作的超时期限。该时间单   位为秒,默认值30秒。

3.DataContext类的方法

    1.执行SQL命令的ExecuteCommand()方法

    2.执行SQL查询的ExecuteQuery()方法

    3.提交更改到数据库的SubmitChanges()方法

    4.获取表集合的GetTable()方法

    5.获取已修改对象的GetChangeSet()方法

三、处理Table<T>类型的结果

Table主要操作数据库的方法
方法名称说     明
DeleteAllOnSubmit(TSbuEntity)将集合中的所有实体置于pending delete状态
DeleteOnSubmit将此表中的实体置为pending delete状态
InsertAllOnSubmit(TSubEntity)将集合中所有处于pending insert状态的实体添加到DataContext
InsertOnSubmit将处于pending insert 状态的实体添加到此Table(TEntity)








//添加一个新的角色信息到Role表中
private void InsertRole()
{
//创建LinqDB数据库的数据上下文实例
LinqDBDataContext db=new LinqDBDataContext(LinqSystem.LinqDBConnectionString);
Response.Write("添加前角色的数量:"+db.Role.Count()+"<br/>");
//创建一个新角色
Role role=new Role{RoleName="新的角色"};
//将新的角色添加到数据库中
db.Role.InsertOnSubmit(role);
db.SubmitChanges();
Response.Write("添加后角色的数量:"+db.Role.Count());
}

结果
添加前角色的数量:5
添加后角色的数量:6

注意:上述

db.SubmitChanges();

只改变Table<T>中T的状态,并没有真正的将数据操作的结果写入到数据库中,提交到数据库必须调用相应数据库上下文的SubmitChanages()方法。


四、处理EntitySet<T>类型的结果

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

处理EntitySet<T>类型的结果(Add):

处理EntitySet<T>类型的结果(Del):


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

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


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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值