LINQ TO SQL
一、LINQ TO SQL概述
LINQ TO SQL最重要的一个功能就是为数据库创建一个对象模型(由基于.NET框架的类组成),并将该对象模型映射到数据库中的相应对象。
LINQ TO SQL 对象模型的基本元素 | SQL Server数据库中的对象 |
实力类 | 表 |
属性或字段 | 列 |
关联 | 外键关系 |
方法 | 存储过程和函数 |
二、数据上下文
1.DataContext概述
DataContext又称数据上下文,它为LINQ TO SQL 提供操作数据库的入口。使用LINQ TO SQL 操作数据库,首先需要为该数据库创建一个继承自DataContext类的自定义的数据上下文类。
DataContext类能够通过数据库连接或连接字符串来映射数据库中的所有实体的源,并跟踪和标识用户对数据库的更改。用户可以调用其SubmitChanges()方法。
2.DataContext类的属性
1.连接属性Connection
Connection属性可以获取DataContext类的实例的连接。值得注意的是,用户获取该属性的值之后,该连接对象的默认状态是关闭的。因此,用户如果使用该连接对象,则需要显式打开该连接对象的状态。
2.事务属性 Transaction
Transaction属性为DataContext类的实例设置访问数据库的事务。其中,LINQ TO SQL支持以下三种事务。
(1)显式事务。(2)隐式事务。(3)显式可分发事务。
3.执行命令的最大时间属性CommandTimeout
CommandTimeout属性可以设置或获取DataContext类的实例的查询数据库操作的超时期限。该时间的单位为秒,默认值为30秒。有时,查询数据库操作可能需要很长的时间。此时,则需要增大该属性的值,以保证查询数据库的操作能够完成。
三、DataContext类的方法
1.执行SQL命令的ExecuteCommand()方法
ExecuteCommand()方法能够执行指定的SQL语句,并通过该SQL语句来操作数据库。ExecuteCommand()方法返回一个整数值,即该SQL语句影响记录的数量。
先创建实例,创建被执行的SQL语句,调用方法执行语句,显示方法执行的结果,即被修改记录的数量。
protected void btnCommand_Click(object sender, EventArgs e)
{
LinqDBDataContext DB = new LinqDBDataContext();
string strSql = "update userinfo set username={0} where id=7";
int result = DB.ExecuteCommand(strSql, "花无缺");
Response.Write(result + "条数据受影响");
}
2.执行SQL查询的ExecuteQuery()方法
ExecuteQuery()方法可以执行指定的SQL查询语句,并通过SQL查询语句检索数据,查询结果保存数据类型为IEnumerable或IEnumerable<TResult>对象。
先创建实例,创建被执行的SQL语句,调用方法执行语句,查询结果保存在result变量中,使用foreach语句显示result变量中的信息。
protected void btnQuery_Click(object sender, EventArgs e)
{
LinqDBDataContext DB = new LinqDBDataContext();
string strSql = "select top 5 * from userinfo";
var users = DB.ExecuteQuery<UserInfo>(strSql);
foreach (var user in users)
{
Response.Write("用户昵称:" + user.Username + "<br />");
}
}
3.提交更改到数据库的SubmitChanges()方法
SubmitChanges()方法能够计算要插入、更新或删除已修改对象的集,并执行相应的修改提交到数据库,并修改数据库。
4.获取表集合的GetTable()方法
GetTable()方法能够获取DataContext类的实例的表的集合。
5.获取已修改对象的GetChangeSet()方法
GetChangeSet()方法能够获取被修改的对象,它返回由三个只读集合组成的对象。它的返回值的类型为ChangeSet。
Deletes属性,已从ChangeSet中删除的实体。
Insert属性,已插入到ChangeSet中的实体。
Updates属性,已在ChangeSet中更新的实体。