LINQ TO SQL 类
一、含义:
linq to sql 是LINQ中最重要的一个组件,它可以为关系数据库提供一个对象模型,并在该对象模型基础上 实现对数据的查询、添加、修改、删除等功能。以下是LINQ TO SQL 对象模型和SQL Server数据库中的对象映射关系图:
LINQ TO SQL 对象模型的基本元素 | SQL Server数据库中的对象 |
实体类 | 表 |
属性或字段 | 列 |
关联 | 外键关系 |
方法 | 存储过程或函数 |
二、数据上下文
DataContext类是一个LINQ TO SQL 类它充当sql server数据库与映射到该数据库的linq to sql实体类之间的管道,它包含用于连接数据库以及操作数据库的连接字符串信息和方法。
DataContext类的属性
DataContext包括多个属性,如连接属性connection、事务属性transation等。
DataContext类的方法
1. 执行sql命令的ExecuteCommand()方法,步骤如下:
ExecuteCommand()方法能够执行指定的sql语句,并通过该sql语句来操作数据库。ExecuteCommand()方法返回一个整数值,即该sql语句影响记录的数量。
1)创建LinDBDataContext类的实例db。
2)创建被执行的sql语句。
3)调用ExcuteCommand()方法执行上述指定的sql语句。
4)调用ExcuteCommand()方法执行的结果,即被修改记录的数量。
例如:
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查询的ExecuteCommand()方法
ExecuteCommand()方法能够执行指定的sql语句,并通过该sql语句来检索数据,查询结果保存数据类型为IEnumerable或IEnumerable<TResult>的对象。
1)创建LinDBDataContext类的实例db。
2)创建被执行的sql语句。
3)调用ExcuteCommand()方法执行上述指定的sql查询语句,擦和讯结果保存在result变量中。其中,查询结果中的元素的数据类型为UserInfo。
4)使用froeach语句显示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.获取已修改对象的GetChangSet()方法
GetChangSet()方法能够获取被修改的对象,它返回由3个只读集合(Inserts、Deletes、Update)组成的对象。GetChangSet()方法返回值的类型为ChangeSet。
三、处理Table<T>类型的结果
这个能方表操作数据库中的数据,如插入数据到数据库、修改数据库中的数据、删除数据库中的数据。
例如:
protected void btnAdd_Click(object sender, EventArgs e)
{
LinqDBDataContext DB = new LinqDBDataContext();
EntitySet<Product> productInfo = DB.UserInfo.First().Product;
Response.Write("添加前的数量:" + productInfo.Count + "<br />");
Product product = new Product()
{
Name = "唐悠悠",
Remark = "我叫唐悠悠",
UserId = 3,
Status = 1,
CreateDate = DateTime.Now,
LasterDate = DateTime.Now
};
productInfo.Add(product);
DB.SubmitChanges();
Response.Write("添加后的数量:" + productInfo.Count + "<br />");
}