【十天学会Linq to sql】第二天—–数据上下文
2013-06-09 22:43
267 查看
目录
DataContext类型(数据上下文)是System.Data.Linq命名空间下的重要类型,用于把查询句法翻译成SQL语句,以及把数据从数据库返回给调用方和把实体的修改写入数据库。
DataContext提供了以下一些使用的功能:
l 以日志形式记录DataContext生成的SQL
l 执行SQL(包括查询和更新语句)
l 创建和删除数据库
DataContext是实体和数据库之间的桥梁,那么首先我们需要定义映射到数据表的实体。
------------这部分内容在百度百科和msdn上面都有解释,新手可以暂时性忽略掉;
定义实体类
不管是什么架构,都离不开实体类的构建,如果单纯试用SQL查询,返回的数据处理可以把我们活活累死;
【复制博客园(LoveCherry)的部分内容】
现在,创建一个ASP.NET页面,然后在页面上加入一个GridView控件,使用下面的代码进行绑定数据:
结果如下图:
强类型DataContext
日志功能
1、数据上下文就是取款机;
2、我拿信用卡去取钱,它就把钱吐出来给我(查询数据);
3、并且在银行里面存下取款记录(日志功能);
4、有时候钱多,肯定的拿钱去存下来的,那就是把钱放进取款机里面,我的信用卡就有钱了(添加数据);
5、有一天一不小心掉了手机,需要换号码,换完之后还需要去银行把信用卡的绑定手机号码更改才行,不然没办法接受通知(更新数据)
6、;万一有一天我穷的用不起信用卡了,没办法,只能去销卡了(删除数据);
上面这样理解应该很简单了吧~~~距离不当,莫见怪~~
本文由CoolHots原创编译,转载请保留链接: 【十天学会Linq to sql】第二天—–数据上下文
个人主页:CoolHots技术分享
【十天学会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”开头的记录,并把CustomersID、Name以及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技术分享
相关文章推荐
- 【十天学会Linq to sql】第三天—–数据查询
- ASP.NET网站开发中的LINQ to SQL与数据上下文
- LINQ to SQL ----数据上下文DataContext
- MVC+LINQToSQL的Repository模式之(一)数据工厂
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
- [译]LINQ TO SQL 介绍(定义数据模型类) – Part.2
- Silverlight 2 (beta1)数据操作(5)——使用LINQ to SQL进行数据CRUD操作(上)
- Linq to SQL 插入数据时的一个问题
- linq to sql 怎么查询前 11 条数据
- Linq TO SQL 开发之数据验证 (整理)
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据[转]
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
- MVC+LINQToSQL的Repository模式之(二)数据基类
- DataRabbit 轻量的数据访问框架(14)-- DataRabbit 3.0 与 Linq to sql 性能比较
- 同步DataContext,解决linq to sql更新数据的问题
- Silverlight 2 (beta1)数据操作(5)——使用LINQ to SQL进行数据CRUD操作(上)
- 关于使用Linq to sql作为数据交互时的架构问题
- 步步为营VS 2008 + .NET 3.5(13) - DLINQ(LINQ to SQL)之用户自定义函数、在不同的DataContext之间做更新、缓存、获取信息、数据加载选项和延迟加载
- 测试SqlHelp,linq to SQL,Nhibernate批量处理数据的效率 2009-06-07
- 实现类似LINQ TO SQL的功能, 轻量级的数据访问组件