Linq to SQL
LINQ to SQL是LINQ中的最重要的一个组件,为.NET Framework 3.5所支持,它可以为关系数据库提供一个对象模型。其中LINQ to SQL最重要的一个功能就是为数据库创建一个对象模型(由基于.NET框架的类组成),并将该对象模型映射到数据库中的相应对象
Datacontext 又称为数据上下文,它是LINQ to SQL提供操作数据库的入口、如果使用LINQ to SQL 操作数据库,则首先需要为该数据库创建一个继承于DataContext类的自定义的数据上下文类,并在该类中定义表,以及操作数据的方法。
DataContext类的方法
执行SQL命令的ExecuteQuery()方法
(1)创建LinqDBDataContext类的实例db。
(2)创建被执行的SQL语句。
(3)调用ExecuteQuery()方法执行上述指定的SQL语句,查询结果保存到result变量中。
(4)使用foreach语句显示result变量中的信息。
- private void ExecuteSqlQuery( )
- {
- //创建LinqDB 数据库上下文的实例
- lingDBDataContext db =new LinqDBDataContext(
- LinqSystem.LinqDBConmetionStrin)
- //创建SQL 语句
- string sql="SELECT TOP 5 * FROM UserInfo";
- IE numerable<UserInfo> users
- = db.ExecuteQuery<UserInfo
- //显示查询的结果
- foreach (UserInfo u in users)
- {
- Response.Wite(用户名称:" + u.Usemame +"<br/>");
- }
- }
显示结果为:
处理Table<T>类型的结果
使用Table<T>能够方便地操作数据库中的数据,如插入数据到数据库、修改数据库中的数据、删除数据库中的数据。
方法名称 |
说明 |
DeleteAllOnSubmit |
将集合中的所有实体置于pending delete状态 |
DeleteOnSubmit |
将此表中的实体置为pending 状态 |
InsertAllOnSubmit |
将集合中所有处于pending insert 状态的实体添加到DataContext |
InsertOnSubmit |
将处于pending insert状态的实体添加到此Table(TEntity) |
- private void InsertRoleO{
- //创建LinqDB 数据库的数据上下文实例
- LinqDBDataContex db= new LinqDBDataContext(
- LinqSystem.LinqDBConnectionString) ;
- Response.Write("添加前角色的数量:“+ db.Role.CountO +"<br/>");
- //创建一个新的角色
- Role role= new Role{ RoleName="新的角色"};
- //将新的角色添加到数据库中
- db.Role.InsertOnSubmit(role);
- db.SubmitChanges();
- Response.Write("添加后角色的数量:"+db.Role.Count());
- }
显示结果为:
添加实体的Add()方法
(1)Add()方法能够将元素或实体添加到EntitySet<T>集合中。新添加的元素或实体位于EntitySet<T>集合的末尾处。
创建LinqDBDataContext类的实例db。
(2)获取与第一个用户相关的商品信息,并保存为productsforFirstUser实例。其中,该实例的数据类型为EntitySet<Product>。
显示添加新的实体之前productsforFirstUser实例中的实体的数量。
(3)创建一个新的实体P(实体的数据类型为Product),并设置了该实例的属性的值。
(4)调用Add()方法把实体p弹夹到productsforFirstUser实例中。
(5)调用SubmitChanges()方法将上述修改提交到数据库中。
(6)显示添加新的实体之后productsforFristUser实例中的实体的数量。
- private void ShowEntitySetadd (){
- //创建LinqDB 数据库上下文的实例
- LinqDBDataContext db = new LinqDBDataContext(LinqSystem.LinqDBConnectionString);
- //获取第一个用户的商品信息
- EntitySet<Product> productsforFirstUser
- db.Userlnfo.First<UserInfo>().Product;
- //显示商品数量
- Response.Write(添加商品之前的数量:"
- + productsforFirstUser.Count.ToString +" <br/>");
- //创建一个新对象
- Product p= new ProductO;
- p.Name="New Product" + DateTime.Now.ToSting()
- p.Price= 100.0m;
- p.LasterDate= DateTime.Now;
- p.PicureUrl= string.Empty;
- p.Remark= string.Empty;
- p.SaleNumber =0;
- p.Status= 1;
- p.Stock= 100;
- p.UserID= 1;
- p.ViewCount= 0;
- p.CategoryID= 2;
- p.CreateDate= DateTime.Now;
- //添加对象到productsforFirstUer 集合中
- productsforFirstUser.Add(p);
- //提交更改到数据库
- db.SubmitChanges();
- //显示商品数量
- Response.Write("添加商品之后的数量:" +
- productsforFirstUero +" <br/>");
- }
显示结果为:
简单查询
查询UserInfo表中ID列的值小于10,且Username列的值的长度大于5的数据。
- var result=from user in db.UserInfo where user.ID<10&&user.Username.Length>5 select user;
动态数据支持
1.创建ASP.NET Dynamic Data 应用程序
2.添加数据模型
3.修改Global.asax文件
4.运行显示