Linq to SQL

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变量中的信息。

[html] view plain copy
  1. private void ExecuteSqlQuery( )  
  2. {  
  3. //创建LinqDB 数据库上下文的实例  
  4. lingDBDataContext db =new LinqDBDataContext(  
  5. LinqSystem.LinqDBConmetionStrin)  
  6. //创建SQL 语句  
  7. string sql="SELECT TOP 5 * FROM UserInfo";  
  8. IE numerable<UserInfo> users  
  9. db.ExecuteQuery<UserInfo  
  10. //显示查询的结果  
  11. foreach (UserInfo u in users)  
  12. {  
  13. Response.Wite(用户名称:" + u.Usemame +"<br/>");  
  14. }  
  15. }  

显示结果为:



处理Table<T>类型的结果

使用Table<T>能够方便地操作数据库中的数据,如插入数据到数据库、修改数据库中的数据、删除数据库中的数据。

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

[html] view plain copy
  1.  private void InsertRoleO{  
  2.   //创建LinqDB 数据库的数据上下文实例  
  3.   LinqDBDataContex dbnew LinqDBDataContext(  
  4.   LinqSystem.LinqDBConnectionString) ;  
  5. Response.Write("添加前角色的数量:“+ db.Role.CountO +"<br/>");  
  6.  //创建一个新的角色  
  7.   Role rolenew Role{ RoleName="新的角色"};  
  8.   //将新的角色添加到数据库中  
  9.   db.Role.InsertOnSubmit(role);  
  10. db.SubmitChanges();  
  11. Response.Write("添加后角色的数量:"+db.Role.Count());  
  12. }  

显示结果为:

添加实体的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实例中的实体的数量。

[html] view plain copy
  1. private void ShowEntitySetadd (){  
  2. //创建LinqDB 数据库上下文的实例  
  3. LinqDBDataContext db = new LinqDBDataContext(LinqSystem.LinqDBConnectionString);  
  4. //获取第一个用户的商品信息  
  5. EntitySet<Product> productsforFirstUser  
  6. db.Userlnfo.First<UserInfo>().Product;  
  7. //显示商品数量  
  8. Response.Write(添加商品之前的数量:"  
  9. + productsforFirstUser.Count.ToString +" <br/>");  
  10. //创建一个新对象  
  11. Product pnew ProductO;  
  12. p.Name="New Product" + DateTime.Now.ToSting()  
  13. p.Price100.0m;  
  14. p.LasterDateDateTime.Now;  
  15. p.PicureUrlstring.Empty;  
  16. p.Remarkstring.Empty;  
  17. p.SaleNumber =0;  
  18. p.Status1;  
  19. p.Stock100;  
  20. p.UserID1;  
  21. p.ViewCount0;  
  22. p.CategoryID2;  
  23. p.CreateDateDateTime.Now;  
  24. //添加对象到productsforFirstUer 集合中  
  25. productsforFirstUser.Add(p);  
  26. //提交更改到数据库  
  27. db.SubmitChanges();  
  28. //显示商品数量  
  29. Response.Write("添加商品之后的数量:" +  
  30. productsforFirstUero +" <br/>");  
  31. }  

显示结果为:


简单查询

查询UserInfo表中ID列的值小于10,且Username列的值的长度大于5的数据。

[html] view plain copy
  1. 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.运行显示