目前本人收集的最全的LINQ入门资料~~大家一起LINQ吧
更新时间:2023-05-23 00:50:02 阅读量: 实用文档 文档下载
- 本人的一些收推荐度:
- 相关推荐
收集的最全的LINQ入门资料
入门教程系列1
Linq to Sql(一):DataContext与实体
Linq to Sql(二):增删改
Linq to Sql(三):查询句法
Linq to Sql(四):存储过程
Linq to Sql(五):探究特性
Linq to Sql(六):并发与事务
Linq to Sql(七):继承与关系
Linq to sql(八):其它
入门教程系列2
LINQ体验(1)——Visual Studio 2008新特性
我平时利用课余零碎时间来学习3.5、LINQ、Silverlight、3.5Extensions等新东西,通过笔记形式来记录自己所学的历程,也给大家一起学习Visual Studio 2008和.NET3.5提供一个平台,为保证此系列的完整性,我打算先依次介绍一下C#3.0新语言特性和改进,然后从一条一条LINQ语句分析来贯穿LINQ的知识点……
LINQ体验(2)——C# 3.0新语言特性和改进(上篇)
LINQ体验(3)——C# 3.0新语言特性和改进(下篇)
LINQ体验(4)——LINQ简介和LINQ to SQL语句之Where
LINQ是LanguageIntegratedQuery的简称,它是集成在.NET编程语言中的一种特性。已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感知、静态类型等强类型语言的好处。并且它同时还使得查询可以方便地对内存中的信息进行查询而不仅仅只是外部数据源。…
LINQ体验(5)——LINQ to SQL语句之Select/Distinct和Count/Sum/Min/Max/Avg
LINQ体验(6)——LINQ to SQL语句之Join和Order By
LINQ体验(7)——LINQ to SQL语句之Group By/Having和Exists/In/Any/All/Contains
我们继续讲解LINQ to SQL语句,这篇我们来讨论Group By/Having操作符和Exists/In/Any/All/Contains操作符。……
LINQ体验(8)——LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods
我们继续讲解LINQ to SQL语句,这篇我们来讨论Union All/Union/Intersect操作和Top/Bottom操作和Paging操作和SqlMethods操作 。……
LINQ体验(9)——LINQ to SQL语句之Insert/Update/Delete操作
这篇我们来讨论LINQ的Insert/Update/Delete操作。这个在我们的程序中最为常用了。我们直接看例子。……
LINQ体验(10)——LINQ to SQL语句之开放式并发控制和事务
从今天开始继续这个系列。告诉大家一个好消息:微软于2月1日发布了Visual Studio Team System2008TeamSuite简体中文版,您可以在这里下载Visual Studio Team System 2008TeamSuite简体中文版90天试用版。今天简单的学习下开放式并发控制和事务的内容,
收集的最全的LINQ入门资料
具体详细的内容现在可以参看MSDN了。
LINQ体验(11)——LINQ to SQL语句之Null语义和String/DateTime方法
在本系列中,主要介绍LINQtoSQL基础的东西,因为LINQ太强大了,它对我们平常使用不同的数据源有着不同的内容,其包括对于SQLServer 数据库的LINQtoSQL;对于XML 文档的LINQ to XML;对于 数据集的LINQtoDataSet;对于.NET集合、文件、字符串等的LINQ to Objects。
LINQ体验(12)——LINQ to SQL语句之对象标识和对象加载
实际上,通常我们是将数据从数据库中提取出来放入另一层中,应用程序在该层对数据进行处理。这就是 LINQtoSQL支持的模型。将数据作为行从数据库中提取出来时,你不期望表示相同数据的两行实际上对应于相同的行实例。如果您查询特定客户两次,您将获得两行数据。每一行包含相同的信息。
LINQ体验(13)——LINQ to SQL语句之运算符转换和与LINQ to SQL
LINQ体验(14)——LINQ to SQL语句之存储过程
在我们编写程序中,往往需要一些存储过程,在LINQ to SQL中怎么使用呢?也许比原来的更简单些。下面我们以NORTHWND.MDF数据库中自带的几个存储过程来理解一下。 LINQ体验(15)——LINQ to SQL语句之用户定义函数
我们可以在LINQ to SQL中使用用户定义函数。只要把用户定义函数拖到O/R设计器中,LINQtoSQL自动使用FunctionAttribute属性和ParameterAttribute属性(如果需要)将其函数指定为方法。这时,我们只需简单调用即可。
LINQ体验(16)——LINQ to SQL语句之DataContext
DataContext作为LINQ to SQL框架的主入口点,为我们提供了一些方法和属性,本文用几个例子说明DataContext几个典型的应用。
LINQ体验(17)——LINQ to SQL语句之动态查询
LINQ体验(18)——LINQ to SQL语句之视图和继承支持
我们使用视图和使用数据表类似,只需将视图从“服务器资源管理器/数据库资源管理器”拖动到O/R设计器上,自动可以创建基于这些视图的实体类。我们可以同操作数据表一样来操作视图了。这里注意:O/R设计器是一个简单的对象关系映射器,因为它仅支持 1:1 映射关系。
收集的最全的LINQ入门资料
Linq to Sql(一):DataContext与实体
DataContext
DataContext类型(数据上下文)是System.Data.Linq命名空间下的重要类型,用于把查询句法翻译成SQL语句,以及把数据从数据库返回给调用方和把实体的修改写入数据库。
DataContext提供了以下一些使用的功能:
以日志形式记录DataContext生成的SQL
执行SQL(包括查询和更新语句)
创建和删除数据库
DataContext是实体和数据库之间的桥梁,那么首先我们需要定义映射到数据表的实体。
定义实体类
收集的最全的LINQ入门资料
以Northwind数据库为例,上述Customers类被映射成一个表,对应数据库中的 Customers表。然后在类型中定义了三个属性,对应表中的三个字段。其中,CustomerID字段是主键,如果没有指定Column特性的Name属性,那么系统会把属性名作为数据表的字段名,也就是说实体类的属性名就需要和数据表中的字段名一致。
现在,创建一个页面,然后在页面上加入一个GridView控件,使用下面的代码进行绑定数据:
收集的最全的LINQ入门资料
使用DataContext类型把实体类和数据库中的数据进行关联。你可以直接在DataContext的构造方法中定义连接字符串,也可以使用
IDbConnection:
之后,通过GetTable获取表示底层数据表的Table类型,显然,数据库中的Customers表的实体是Customer类型。随后的查询句法,即使你不懂SQL应该也能看明白。从Customers表中找出CustomerID以“A”开头的记录,并把CustomersID、Name以及City封装成新的匿名类型进行返回。 结果如下图:
收集的最全的LINQ入门资料
强类型DataContext
强类型数据上下文使代码更简洁:
DataContext其实封装了很多实用的功能,下面一一介绍。
日志功能
收集的最全的LINQ入门资料
运行程序后在网站所在目录生成了log.txt,每次查询都会把诸如下面的日志追加到文本文件中:
应该说这样的日志对于调试程序是非常有帮助的。
探究查询
收集的最全的LINQ入门资料
在这里,我们通过DataContext的GetCommand方法获取了查询对应的DbCommand,并且输出了CommandText和所有的DbParameter。之后,我们又通过GetChangeSet方法获取了修改后的实体,并输出了修改内容。
执行查询
收集的最全的LINQ入门资料
前一篇文章已经说了,虽然Linq to sql能实现90%以上的TSQL功能。但是不可否认,对于复杂的查询,使用TSQL能获得更好的效率。因此,DataContext类型也提供了执行SQL语句的能力。代码的执行结果如下图:
创建数据库
收集的最全的LINQ入门资料
这段代码在数据库中创建了名为testdb的数据库,等同于下面的脚本:
收集的最全的LINQ入门资料
同时,DataContext还提供了DeleteDatabase()方法,在这里就不列举了。
使用DbDataReader数据源
你同样可以选择使用DataReader获取数据,增加了灵活性的同时也增加了性能。
看到这里,你可能会觉得手工定义和数据库中表对应的实体类很麻烦,不用担心,VS2008提供了自动生成实体类以及关系的工具,工具的使用
收集的最全的LINQ入门资料
将在以后讲解。今天就讲到这里,和DataContext相关的事务、加载选项、并发选项以及关系实体等高级内容也将在以后讲解。
Linq to Sql(二):增删改
示例数据库
在数据库中创建一个名为GuestBook的数据库,在里面创建一个tbGuestBook的表,结构如上表。
收集的最全的LINQ入门资料
生成实体类
右键点击网站项目,选择添加新项,然后选择“Linq to sql Classes”,命名为GuestBook。然后打开App_Code里面的GuestBook.dbml。设计视图上的文字提示你可以从服务器资源管理器或者攻击箱拖动项到设计界面上来创建实体类。
那么,我们就在服务器资源管理器中创建一个指向GuestBook数据库的数据连接,然后把tbGuestBook表拖动到GuestBook.dbml的设计视图上,按CTRL+S保存。打开GuestBook.designer.cs可以发现系统自动创建了GuestBook数据库中tbGuestBook表的映射,如下图:
收集的最全的LINQ入门资料
简易留言簿
现在,我们就可以使用Linq to sql完成简易留言簿了。实现以下功能:
发表留言(增)
查看留言(查)
收集的最全的LINQ入门资料
管理员回复留言(改)
管理员删除留言(删除)
首先,创建一个Default.aspx,在页面上加入一些控件:
收集的最全的LINQ入门资料
你可能很难想象,使用Linq to sql进行数据访问会是这么简单,后台代码:
收集的最全的LINQ入门资料
{ if (!IsPostBack) { SetBind(); } } protected void btn_SendMessage_Click(object sender, EventArgs e) { tbGuestBook gb = new tbGuestBook(); gb.ID = Guid.NewGuid(); erName = tb_UserName.Text; gb.Message = tb_Message.Text; gb.IsReplied = false; gb.PostTime = DateTime.Now; ctx.tbGuestBooks.Add(gb); ctx.SubmitChanges(); SetBind(); } private void SetBind() { rpt_Message.DataSource = from gb in ctx.tbGuestBooks orderby gb.PostTime descending select gb; rpt_Message.DataBind();
收集的最全的LINQ入门资料
前面创建Linq to sql Classes的时候我们输入名字GuestBook,系统就为我们自动创建了GuestBookDataContext(你也可以在
GuestBook.Designer.cs
中找到类定义)。在绑定的时候我们使用查询句法查询留言表中所有留言,按照发表时间倒序(天哪?这是数据访问吗?好像仅仅定义了一句SQL啊)。在发表留言按钮中,我们为一个tbGuestBook赋值,然后把它加入留言表,再提交更改,就这样完成了记录的插入。 运行效果如下图:
收集的最全的LINQ入门资料
然后,再创建一个Admin.aspx,前台代码如下:
收集的最全的LINQ入门资料
后台代码:
收集的最全的LINQ入门资料
rpt_Message.DataSource = from gb in ctx.tbGuestBooks orderby gb.PostTime descending select gb; rpt_Message.DataBind(); } protected void rpt_Message_ItemCommand(object source, RepeaterCommandEventArgs e) { if (mandName == "DeleteMessage") { StreamWriter sw = new StreamWriter(Server.MapPath("log.txt"), true); ctx.Log = sw; tbGuestBook gb = ctx.tbGuestBooks.Single(b => b.ID == new Guid(mandArgument.ToString())); ctx.tbGuestBooks.Remove(gb); ctx.SubmitChanges(); SetBind(); sw.Close(); } if (mandName == "SendReply") { StreamWriter sw = new StreamWriter(Server.MapPath("log.txt"), true); ctx.Log = sw; tbGuestBook gb = ctx.tbGuestBooks.Single(b => b.ID == new Guid(mandArgument.ToS
tring())); gb.Reply = ((TextBox)e.Item.FindControl("tb_Reply")).Text;
正在阅读:
目前本人收集的最全的LINQ入门资料~~大家一起LINQ吧05-23
青岛版小学科学三年级下册《蚂蚁》教学实录12-28
多维随机变量及其概率分布05-24
2022年民主生活会发言提纲07-31
土木工程毕业实习报告07-19
课时跟踪检测(十七) 近代中国的民主革命03-09
疾病护理测试题答案10-02
爸爸的爱作文500字07-15
数形结合课题结题报告05-26
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- LINQ
- 最全
- 入门
- 本人
- 收集
- 目前
- 一起
- 大家
- 资料
- 全新版大学英语听说教程3听力原文
- 实验九 果实类中药的鉴定2010
- 江苏省制造计量器具许可证年度监督检查记录表
- 2011年云南省数据基础理论基础
- 第3章 联系和发展的规律
- 001广成仪制诸品大斋醮告符启坛集
- PSP游戏 GTA血战唐人街 金手指
- 大黄在急性胰腺炎治疗中的作用
- 新版外研版(三起)六年级英语上册全册测试题及答案
- 毕业生就业去向意愿研究开题报告
- 钢结构安装安全制度
- 社会心理学(南开大学精品课程)02
- 非甾体类抗炎药的常见不良反应及预防
- 天津大学化工原理考研真题
- 超声波传感器论文
- 广东省南沙区高三语文4月15日模拟考试卷
- 医院医德医风建设实施方案
- WebLogic Web服务器安全配置基线
- 恋爱成功八大秘籍
- PC100(110)操作手册-090604