ASP.NET网站开发-数据上下文

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

DataContext类的属性
  • 连接属性Connection
          Connection属性可以获取DataContext类的实例的连接(类型为DbConnection)。
  • 事务属性Transaction      
    Transaction属性为DataContext类的实例设置访问数据库的事务。
其中,LINQ to SQL支持以下3种事务:
  1.  显示事务。如果DataContext类的实例显式设置了Transaction属性的值。那么DataContext类的实例调用SubmitChanges()方法是将在同一个事物上进行。
  2. 隐式事务。当DataContext类的实例调动SubmitChanges()方法时,LINQ to SQL会检查是否在已经指定的事务内,如果不是,则LINQ to SQL将启动本地事务,并将此事务执行所生成的SQL命令。
  3.  显式可分发事务。DataContext类的实例可以在Transaction属性指定的事务内调用LINQ to SQL API,而不会创建新的事务。
  •  执行命令的最大时间属性CommandTimeout
      CommandTimeout属性可以设置或获取DataContext类的实例的查询数据库操作的超时期限。
该时间的单位为秒,默认值为30秒。可根据查询数据库的操作增大该属性的值,来保证查询数据库的操作能够完成。
DataContext类的方法 
             

 DataContext类包括多个方法,如创建数据库的CreateDatabase()方法、检测数据库是否存在的DatabaseExistsO方法、删除数据库的DeleteDatabaseO方法、执行SQL命令的ExecuteCommandO方法、执行SQL査询的ExecuteQueryO方法等。

  • 执行SQL命令的ExecuteCommand()方法
 ExecuteCommand())方法能够执行指定的SQL语句,并通过该SQL语句来操作数据库。
        具体步骤如下:
                (1)创建LinqDBDataContext类的实例db。
                (2)创建被执行的SQL语句。
                (3)调用ExecuteCommandO方法执行上述指定的SQL语句。
                (4)显示ExecuteCommandO方法执行的结果,即被修改记录的数量。

[plain]  view plain  copy
  1. ///<summaiy>  
  2. ///执行SQL命令的ExecuteCommand()方法  
  3. ///〈/summary〉  
  4.   
  5. private void ExecuteCommandWithParam()  
  6. {  
  7.   //创建LinqDB数据库上下文的实例  
  8. LinqDBDataContext db = new LinqDBDataContext(LinqSystem.LinqDBConnectionString);  
  9.   //创建SQL语句  
  10. string sql = "UPDATE Userlnfo SET Username = {0} WHEREID > 90";  
  11.   //执行SQL语句,并返回SQL语句影响的行数  
  12. int result = db.ExecuteCommand(sql,"New Name");  
  13.   //显示执行的结果  
  14. Response.Write(result.ToString()+"条数据被修改!");  

        执行结果为:12条数据被修改!

  • 执行SQL查询的ExecuteQuery()方法

             ExecuteQuery()方法可以执行指定的SQL查询语句,并通过SQL查询语句检索数据,查询结果保存数据类型为IEnumerable或IEnumerable<Tresult>的对象。

      具体步骤如下:               

                (1)创建LinqDBDataContext类的实例db。

                (2)创建被执行的SQL查询语句。
                (3)调用ExecuteQuery()方法执行上述指定的SQL查询语句查询结果保存在result变量中。其中,查询结果中的元素的数据类型为UserInfo。
                (4)使用foreach语句显示result变量中的信息。

[plain]  view plain  copy
  1. ///<summary>  
  2. ///执行SQL査询的ExecuteQuery()方法  
  3. ///</summary>  
  4.   
  5. private void ExecuteSqlQuery()  
  6. {  
  7.     //创建LinqDB数据库上下文的实例  
  8.     LinqDBDataContext db = new LinqDBDataContext(  
  9.     LinqSystem.LinqDBConnectionString);  
  10.     //创建SQL语句  
  11.     string sql = "SELECT TOP 5 * FROM UserInfo";  
  12.   
  13.     IEnumerable<UserInfo>users = db.ExecuteQuery<UserInfo>(sql);  
  14.   
  15.     //显示查询的结果  
  16.     foreach(Userlnfo u in users)  
  17.     {  
  18.         Response.Write("用户名称:"+u.Username+"<br/>;  
  19.     }  
  20. }  
执行结果为:
[plain]  view plain  copy
  1. 用户名称为:admin  
  2. 用户名称为:dorient  
  3. 用户名称为:user1  
  4. 用户名称为:user2  
  5. 用户名称为:user3  
  • 提交更改到数据库的SubmitChanges()方法
      SubmitChanges()方法能够计算要插入、更新或删除的己修改对象的集,并执行相应的修改提交到数据库,并修改数据库。
  •  获取表集合的GetTable()方法
             GetTable()方法能够获取DataContext类的实例的表的集合。
  •  获取已修改对象的GetChangeSet()方法
             GetChangeSet()方法能够获取被修改的对象,它返回由3个只读集合(InsertsDeletesUpdates)组成的对象。

  1. Deletes属性,已从ChangeSet中删除的实体。
  2. Inserts属性,己插入到Changeset中的实体。
  3. Updates属性,己在ChangeSet中更新的实体。




1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值