LINQ To SQLTest

 

一. 创建一个Web项目,添加一个实体类User,供LINQ创建Table,代码如下:

 

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Data.Linq;
  6. using System.Data.Linq.Mapping;
  7. namespace LinqToSQL
  8. {
  9.     /// <summary>
  10.     /// 创建实体类
  11.     /// </summary>
  12.     [Table(Name ="tb_User")]
  13.     public  class User
  14.     {
  15.         [Column(IsPrimaryKey = true)]
  16.         public int ID { getset; }
  17.         [Column(Name = "UserName")]
  18.         public string UserName { getset; }
  19.         [Column(Name = "Address")]
  20.         public string Address { getset; }
  21.         [Column(Name = "Sex")]
  22.         public string Sex { getset; }
  23.         [Column(Name = "Email")]
  24.         public string Email { getset; }
  25.         [Column(Name = "Phone")]
  26.         public string Phone { getset; }
  27.         
  28.     }
  29. }

 

 

第二,如果使用强类型DataContext则需要加一个强类型的UserDataContext类,代码如下:

 

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Data ;
  6. using System.Data .Linq ;
  7. namespace LinqToSQL
  8. {
  9.     /// <summary>
  10.     /// User表的强类型的DataContext类型
  11.     /// </summary>
  12.     public  class UserDataContext:DataContext 
  13.     {
  14.         public Table<User> tableUser;
  15.         public UserDataContext(IDbConnection connection) : base(connection) { }
  16.         public UserDataContext(string connection) : base(connection) { }
  17.     }
  18. }

第三, 在页面Default.aspx页面上添加一个GridView控件,GridView控件,使用下面的代码进行绑定数据,后台书写后台代码如下:

 

 

  1. using System;
  2. using System.Collections;
  3. using System.Configuration;
  4. using System.Data;
  5. using System.Linq;
  6. using System.Web;
  7. using System.Web.Security;
  8. using System.Web.UI;
  9. using System.Web.UI.HtmlControls;
  10. using System.Web.UI.WebControls;
  11. using System.Web.UI.WebControls.WebParts;
  12. using System.Xml.Linq;
  13. using System.Data.Linq;
  14. using LinqToSQL;
  15. using System.IO;
  16. using System.Data.Common;
  17. using System.Data.SqlClient;
  18. namespace LinqSQLWeb
  19. {
  20.     public partial class _Default : System.Web.UI.Page
  21.     {
  22.         protected void Page_Load(object sender, EventArgs e)
  23.         {
  24.             if (!Page.IsPostBack)
  25.             {
  26.                 //使用DataContext
  27.                 const string connStr = "Data Source=(local);User Id=sa;Password=server;Initial Catalog=db_Test;";
  28.                 //创建一个DataContext对象
  29.                 DataContext db = new DataContext(connStr);
  30.                 //创建一个Table<>类
  31.                 Table<User> tableUser = db.GetTable<User>();
  32.                 //用LINQ查询来显示所有的数据
  33.                 var subset1 = from u in tableUser where u.Sex == "女" orderby u.UserName select u;
  34.                 GridView1.DataSource = subset1;
  35.                 GridView1.DataBind();
  36.                 //使用强类型的DataContext
  37.                 UserDataContext udataContext = new UserDataContext(connStr);
  38.                 //记录日志
  39.                 StreamWriter sw = new StreamWriter(Server.MapPath("log.txt"), true);
  40.                 udataContext.Log = sw;
  41.                 var subset2 = from u in udataContext.tableUser where u.Sex == "女" orderby u.UserName select u;
  42.                 DbCommand dbCommand = udataContext.GetCommand(subset2);
  43.                 Response.Write(dbCommand.CommandText );
  44.                 foreach (DbParameter parm in dbCommand.Parameters)
  45.                 {
  46.                     Response.Write(string.Format("<br />参数名:{0},参数值:{1}<br/>", parm.ParameterName, parm.Value));
  47.                 }
  48.                 GridView2.DataSource = subset2;
  49.                 GridView2.DataBind();
  50.                 //LINQ使用DbDataReader数据源
  51.                 var conn = new SqlConnection(connStr);
  52.                 var ctx = new DataContext(conn);
  53.                 var cmd = new SqlCommand("select * from tb_User", conn);
  54.                 conn.Open();
  55.                 var reader = cmd.ExecuteReader();
  56.                 GridView3.DataSource = ctx.Translate<User>(reader);
  57.                 GridView3.DataBind();
  58.                 sw.Close();
  59.             }
  60.         }
  61.     }
  62. }

运行程序后在网站所在目录生成了log.txt,每次查询都会把诸如下面的日志追加到文本文件中:

SELECT [t0].[CustomerID], [t0].[ContactName], [t0].[City]

FROM [Customers] AS [t0]

WHERE [t0].[CustomerID] LIKE @p0

-- @p0: Input String (Size = 2; Prec = 0; Scale = 0) [A%]

-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.20706.1

应该说这样的日志对于调试程序是非常有帮助的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值