在.net3.5中出现了一个很新的技术,那就是Linq to SQL,一直听论坛里面的朋友说这Linq to SQL做起事来很方便,如果用他的话就会喜欢上这个,最近就怀着好奇的思想搞了一把,确实不错,能做的东西很多,也很方便。下面是我的具体操作

一, 示例数据库

字段名

字段类型

允许空

字段说明

ID

uniqueidentifier

表主键字段

UserName

varchar(50)

留言用户名

PostTime

datetime

留言时间

Message

varchar(400)

留言内容

IsReplied

bit

留言是否回复

Reply

varchar(400)

留言管理员回复

在数据库中创建一个名为GuestBook的数据库,在里面创建一个tbGuestBook的表,结构如上表。

二,生成实体类

右键点击网站项目,选择添加新项,然后选择“Linq to sql Classes”,命名为GuestBook。然后打开App_Code里面的GuestBook.dbml。设计视图上的文字提示你可以从服务器资源管理器或者攻击箱拖动项到设计界面上来创建实体类。

那么,我们就在服务器资源管理器中创建一个指向GuestBook数据库的数据连接,然后把tbGuestBook表拖动到GuestBook.dbml的设计视图上,按CTRL+S保存。打开GuestBook.designer.cs可以发现系统自动创建了GuestBook数据库中tbGuestBook表的映射。

三,相关的CRUD方法,基本包含常用的方法,如下

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.Linq; using Model; namespace Default { public partial class AllList : System.Web.UI.Page { GuestBookDataContext guestbook = new GuestBookDataContext("server=.;database=GuestBook;uid=sa;pwd=111"); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { LoadData(); } } void LoadData() { SetBindByBasic(); var resutl = from c in guestbook.tbGuestBook select new { 编号 = c.ID, 姓名 = c.UserName, }; this.ddlID1.DataSource = resutl; this.ddlID1.DataValueField = "编号"; this.ddlID1.DataTextField = "编号"; this.ddlID1.DataBind(); this.ddlID2.DataSource = resutl; this.ddlID2.DataValueField = "编号"; this.ddlID2.DataTextField = "编号"; this.ddlID2.DataBind(); this.ddlID3.DataSource = resutl; this.ddlID3.DataValueField = "编号"; this.ddlID3.DataTextField = "编号"; this.ddlID3.DataBind(); } //************************************************************简单查询******************************************** //基础查询,单项返回 void SetBindBySingle() { var resutl = from c in guestbook.tbGuestBook select c.ID; this.gv.DataSource = resutl; this.gv.DataBind(); } //基础查询 void SetBindByBasic() { var resutl = from c in guestbook.tbGuestBook select c; this.gv.DataSource = resutl; this.gv.DataBind(); } //where条件查询 void SetBindByWhere() { var resutl = from c in guestbook.tbGuestBook where c.ID > 2 select c; this.gv.DataSource = resutl; this.gv.DataBind(); } //挑选列 void SetBindByNew() { var resutl = from c in guestbook.tbGuestBook select new { 姓名 = c.UserName, 时间 = c.PostTime, 消息 = c.Messages, }; this.gv.DataSource = resutl; this.gv.DataBind(); } //排除重复 void SetBindByDistinct() { var resutl = (from c in guestbook.tbGuestBook select c.UserName).Distinct(); this.gv.DataSource = resutl; this.gv.DataBind(); } //排序 void SetBindByOrderby() { var resutl = from c in guestbook.tbGuestBook orderby c.UserName descending,c.ID ascending select new { 编号 = c.ID, 姓名 = c.UserName, 消息 = c.Messages, }; this.gv.DataSource = resutl; this.gv.DataBind(); } //查询包含 void SetBindByContains() { var resutl = from c in guestbook.tbGuestBook where c.UserName.Contains("s") select new { 编号 = c.ID, 姓名 = c.UserName, 消息 = c.Messages, }; this.gv.DataSource = resutl; this.gv.DataBind(); } //查询以什么开头 void SetBindByStartWith() { var resutl = from c in guestbook.tbGuestBook where c.UserName.StartsWith("s") select new { 编号 = c.ID, 姓名 = c.UserName, 消息 = c.Messages, }; this.gv.DataSource = resutl; this.gv.DataBind(); } //行数 void SetBindByTake() { var resutl = (from c in guestbook.tbGuestBook select new { 编号 = c.ID, 姓名 = c.UserName, 消息 = c.Messages, }).Take(5); this.gv.DataSource=resutl; this.gv.DataBind(); } //分页(排除前面的行数) void SetBindBySkip() { var resutl = (from c in guestbook.tbGuestBook select new { 编号 = c.ID, 姓名 = c.UserName, 消息 = c.Messages, }).Skip(5); this.gv.DataSource = resutl; this.gv.DataBind(); } //ToList void SetBindByToList() { var resutl = (from c in guestbook.tbGuestBook select new { 编号 = c.ID, 姓名 = c.UserName, 消息 = c.Messages, }).ToList(); this.gv.DataSource = resutl; this.gv.DataBind(); } //分组排序 void SetBindByGroup() { var resutl = from c in guestbook.tbGuestBook group c by c.UserName into g where g.Count()>2 orderby g.Count() select new { 编号 = g.Key, 行数 = g.Count(), }; this.gv.DataSource = resutl; this.gv.DataBind(); } //************************************************************组合查询******************************************** //Union,过滤 void SetBindByUnion() { var resutl = (from c in guestbook.tbGuestBook where c.UserName.Contains("s") select c).Union (from c in guestbook.tbGuestBook where c.UserName.StartsWith("s") select c); this.gv.DataSource = resutl; this.gv.DataBind(); } //Contact,不过滤 void SetBindByConcat() { var resutl = (from c in guestbook.tbGuestBook where c.UserName.Contains("s") select c).Concat (from c in guestbook.tbGuestBook where c.UserName.StartsWith("s") select c); this.gv.DataSource = resutl; this.gv.DataBind(); } //Intersect,取相交项 void SetBindByIntersect() { var resutl = (from c in guestbook.tbGuestBook where c.Messages.Contains("1") select c).Intersect (from c in guestbook.tbGuestBook where c.UserName.StartsWith("s") select c); this.gv.DataSource = resutl; this.gv.DataBind(); } //Except,排除相交项 void SetBindByExcept() { var resutl = (from c in guestbook.tbGuestBook where c.Messages.Contains("1") select c).Except (from c in guestbook.tbGuestBook where c.UserName.StartsWith("s") select c); this.gv.DataSource = resutl; this.gv.DataBind(); } //子查询 void SetBindByChildren() { var resutl = from c in guestbook.tbGuestBook where (from b in guestbook.tbGuestBook where b.Messages == "1" select b.UserName).Contains("1") select c; this.gv.DataSource = resutl; this.gv.DataBind(); } //数组子查询 void SetBindByArray() { var resutl = from c in guestbook.tbGuestBook where new string[]{"1","sdf"}.Contains(c.UserName) select c; this.gv.DataSource = resutl; this.gv.DataBind(); } //内连接,排除相同的 void SetBindByJoin() { var resutl = (from c in guestbook.tbGuestBook join g in guestbook.tbGuestBook on c.UserName equals g.Messages select c).Distinct(); this.gv.DataSource = resutl; this.gv.DataBind(); } //************************************************************高级查询******************************************** //存储过程 void SetBindByProc() { var resutl = from c in guestbook.sp_singleresultset() select c; this.gv.DataSource = resutl; this.gv.DataBind(); } //存储过程,带参数 void SetBindByProcParts() { int ?resutl = -1; guestbook.sp_withparameter("1", ref resutl); this.gv.DataSource = resutl.ToString(); this.gv.DataBind(); } //延迟执行,如果使用两次循环输出的话,会把两次都输出,最好的做法就是把前一个用ToList()存下来 void SetBindByQueryLater() { IQueryable query = from c in guestbook.tbGuestBook select c; foreach (tbGuestBook gb in query) Response.Write(gb.ID + "-----" + gb.Messages); Response.Write("<br/>"); foreach (tbGuestBook gb in query) Response.Write(gb.ID + "-----" + gb.Messages); } //单条数据 void SetBindBySingle1() { tbGuestBook tb = guestbook.tbGuestBook.Single(resutl => resutl.ID == 2); Response.Write(tb.ID + "-----" + tb.Messages); } //************************************************************删除,添加,修改******************************************** void Delete() { tbGuestBook gb = guestbook.tbGuestBook.Single(c =>c.ID == int.Parse(this.ddlID1.SelectedValue)); guestbook.tbGuestBook.DeleteOnSubmit(gb); guestbook.SubmitChanges(); } void Update() { tbGuestBook gb = guestbook.tbGuestBook.Single(c => c.ID == int.Parse(this.ddlID2.SelectedValue)); gb.Messages=this.txtMessage1.Text; guestbook.SubmitChanges(); } void Insert() { tbGuestBook gb = new tbGuestBook(); gb.UserName = this.txtName.Text; gb.PostTime = DateTime.Now; gb.Messages = this.txtMessage2.Text; gb.IsReplied = false; gb.Reply = ""; guestbook.tbGuestBook.InsertOnSubmit(gb); guestbook.SubmitChanges(); } protected void btnDelete_Click(object sender, EventArgs e) { Delete(); LoadData(); } protected void btnUpdate_Click(object sender, EventArgs e) { Update(); LoadData(); } protected void btnInsert_Click(object sender, EventArgs e) { Insert(); LoadData(); } } }

 

转载于:https://www.cnblogs.com/nlx0201/archive/2010/11/03/1908133.html

Linq to SQL学习相关推荐

  1. LINQ to SQL学习的几个问题

    问题一: 什么情况下我们使用自动属性功能,生成自动属性时内部没有明确的私有变量那么我们如何访问这个私有变量呢? 如果不能那我们的封装还有什么存在的意义? Code   1 /**//// <su ...

  2. 数据库LINQ TO SQL在Silverlight中的应用(WCF)------学习笔记(一)

    数据库LINQ TO SQL在Silverlight中的应用(WCF)------学习笔记(一) 步骤: 1. 创建SILVERLIGHT应用程序 2. 创建LINQ TO SQL [注意序列化的问题 ...

  3. LINQ To SQL 语法及实例大全

    LINQ to SQL语句(1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子 ...

  4. ScottGu之博客翻译-LINQ to SQL第三部分,查询数据库 (Part 3 - Querying our Database)

     本贴只为共享知识,更为简洁(即无英文的版本)将会发布在博客堂上,堂主正对此文进行审阅. 希望本贴能对您的LINQ to SQL语言的学习有一定的帮助! 原贴链接: http://weblogs.as ...

  5. 艾伟_转载:使用LINQ to SQL更新数据库(上):问题重重

    在学习LINQ时,我几乎被一个困难所击倒,这就是你从标题中看到的更新数据库的操作.下面我就一步步带你走入这泥潭,请准备好砖头和口水,Follow me. 从最简单的情况入手 我们以Northwind数 ...

  6. LINQ to SQL语句(1)之Where(抄的好)

    Where操作适用场景:实现过滤,查询等功能.说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句.Where操作包括3种形式,分别为简单形式.关 ...

  7. LINQ体验(6)——LINQ to SQL语句之Join和Order By

    LINQ体验(6)--LINQ to SQL语句之Join和Order By Join操作 适用场景:在我们表关系中有一对一关系,一对多关系,多对多关系等.对各个表之间的关系,就用这些实现对多个表的操 ...

  8. Entity Framework 与 LINQ to SQL

    Entity Framework和LINQ to SQL到底有什么区别?这是一个很常见的问题.下面的表中简要罗列了两种技术的主要区别. LINQ to SQL Entity Framework 复杂度 ...

  9. 手把手教你用好LINQ to SQL(1)

    From: http://developer.51cto.com/art/200904/120915.htm 作者写下这篇文章的主要目的不是"一口吃成个胖子"让大家一次就学会LIN ...

最新文章

  1. 完美,竟然用一个脚本就把系统升级到https了,且永久免费!
  2. 完全用Linux工作,抛弃windows
  3. java中属于常量_java中的常量和属性
  4. Github标星3.7k:微软出的数据科学入门课程(附下载)
  5. 软件工程(2019)结对编程第二次作业
  6. python众数问题给定含有n个元素的多重集合s_分治法求众数 给定含有n个元素的多重集合S 联合开发网 - pudn.com...
  7. 开发经验分享_06_前端开发技巧
  8. 回溯子集树与排列树——装载问题旅行售货员问题(算法设计课题)
  9. SQL Server Denali:SSDT新功能解读
  10. 原则 principles
  11. 新IT运维时代 | Docker运维之最佳实践-上篇
  12. paip.Java Annotation注解的作用and 使用
  13. Vijos P1304回文数
  14. html5在线留言表单代码,HTML CSS样式用户留言表单代码分享
  15. 人生,原来是个笑话?
  16. 商标注册流程,山东商标注册去哪好
  17. 去除浏览器自动填充密码功能
  18. 大数据分析工程师面试集锦5--Spark面试指南
  19. 微信分享链接优化 title icon 描述
  20. Shell编程——$[ ] 、${ }、$( )、[ ]、[[ ]]、(())的区别

热门文章

  1. 判断一个字符串是否全部不相同
  2. MySQL BlackHole 存储引擎使用
  3. 查询计划中集的势(Cardinality)的计算
  4. 程序员,请您不要老是熬夜
  5. 联合索引使用规则(转载)
  6. CentOS7搭建hadoop2.6.4+HBase1.1.6
  7. 20145236《信息安全系统设计基础》第0周学习总结
  8. 存储过程系列之存储过程具体操作过程及sql数据库调用
  9. C# BeginInvoke和EndInvoke方法
  10. 未处理的异常:进程性能计数器已禁用