【十天学会Linq to sql】第二天—–数据上下文

目录

【十天学会Linq to sql】第一天—–基础知识

【十天学会Linq to sql】第二天—–数据上下文

【十天学会Linq to sql】第三天—–数据查询

【十天学会Linq to sql】第四天—–数据更新

【十天学会Linq to sql】第六天——存储过程

DataContext   ==数据上下文

      DataContext类型(数据上下文)是System.Data.Linq命名空间下的重要类型,用于把查询句法翻译成SQL语句,以及把数据从数据库返回给调用方和把实体的修改写入数据库。

      DataContext提供了以下一些使用的功能:

l         以日志形式记录DataContext生成的SQL

l         执行SQL(包括查询和更新语句)

l         创建和删除数据库

DataContext是实体和数据库之间的桥梁,那么首先我们需要定义映射到数据表的实体。

------------这部分内容在百度百科和msdn上面都有解释,新手可以暂时性忽略掉;

定义实体类

不管是什么架构,都离不开实体类的构建,如果单纯试用SQL查询,返回的数据处理可以把我们活活累死;

 

【复制博客园(LoveCherry)的部分内容】

using System.Data.Linq.Mapping;
 
[Table(Name = "Customers")]
public class Customer
{
    [Column(IsPrimaryKey = true)]
    public string CustomerID {get; set;}
    [Column(Name = "ContactName")]
    public string Name { get; set; }
    [Column]
    public string City {get; set;}
}

  Northwind数据库为例,上述Customers类被映射成一个表,对应数据库中的 Customers表。然后在类型中定义了三个属性,对应表中的三个字段。其中,CustomerID字段是主键,如果没有指定Column特性的Name属性,那么系统会把属性名作为数据表的字段名,也就是说实体类的属性名就需要和数据表中的字段名一致。

现在,创建一个ASP.NET页面,然后在页面上加入一个GridView控件,使用下面的代码进行绑定数据:

using System.Data.Linq;
 
DataContext ctx = new DataContext("server=xxx;database=Northwind;uid=xxx;pwd=xxx");
Table<Customer> Customers = ctx.GetTable<Customer>();
GridView1.DataSource = from c in Customers where c.CustomerID.StartsWith("A") select new {顾客ID=c.CustomerID, 顾客名=c.Name, 城市=c.City};
GridView1.DataBind();

  使用DataContext类型把实体类和数据库中的数据进行关联。你可以直接在DataContext的构造方法中定义连接字符串,也可以使用IDbConnection

using System.Data.SqlClient;
 
IDbConnection conn = new SqlConnection("server=xxx;database=Northwind;uid=xxx;pwd=xxx");
DataContext ctx = new DataContext(conn);

之后,通过GetTable获取表示底层数据表的Table类型,显然,数据库中的Customers表的实体是Customer类型。随后的查询句法,即使你不懂SQL应该也能看明白。从Customers表中找出CustomerID以“A”开头的记录,并把CustomersIDName以及City封装成新的匿名类型进行返回。

结果如下图:

 

强类型DataContext

public partial class NorthwindDataContext : DataContext
 
{
 
    public Table<Customer> Customers;
 
    public NorthwindDataContext(IDbConnection connection) : base(connection) { }
 
    public NorthwindDataContext(string connection) : base(connection) { }
 
}

强类型数据上下文使代码更简洁:

NorthwindDataContext ctx = new NorthwindDataContext("server=xxx;database=Northwind;uid=xxx;pwd=xxx");
 
GridView1.DataSource = from c in ctx.Customers where c.CustomerID.StartsWith("A") select new { 顾客ID = c.CustomerID, 顾客名 = c.Name, 城市 = c.City };
 
GridView1.DataBind();

 DataContext封装了很多实用的功能,下面抽部分内容介绍

日志功能

 

using System.IO;
 
NorthwindDataContext ctx = new NorthwindDataContext("server=xxx;database=Northwind;uid=xxx;pwd=xxx");
 
StreamWriter sw = new StreamWriter(Server.MapPath("log.txt"), true); // Append
 
ctx.Log = sw;
 
GridView1.DataSource = from c in ctx.Customers where c.CustomerID.StartsWith("A") select new { 顾客ID = c.CustomerID, 顾客名 = c.Name, 城市 = c.City };
 
GridView1.DataBind();
 
sw.Close();

运行程序后在网站所在目录生成了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

说简单点:

  • 1、数据上下文就是取款机;

  • 2、我拿信用卡去取钱,它就把钱吐出来给我(查询数据);

  • 3、并且在银行里面存下取款记录(日志功能);

  • 4、有时候钱多,肯定的拿钱去存下来的,那就是把钱放进取款机里面,我的信用卡就有钱了(添加数据);

  • 5、有一天一不小心掉了手机,需要换号码,换完之后还需要去银行把信用卡的绑定手机号码更改才行,不然没办法接受通知(更新数据

  • 6、;万一有一天我穷的用不起信用卡了,没办法,只能去销卡了(删除数据);

 

上面这样理解应该很简单了吧~~~距离不当,莫见怪~~

本文由CoolHots原创编译,转载请保留链接: 【十天学会Linq to sql】第二天—–数据上下文

个人主页:CoolHots技术分享


<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值