设为首页 收藏本站
查看: 972|回复: 0

[经验分享] Linq to SQL学习

[复制链接]

尚未签到

发表于 2016-11-12 00:21:02 | 显示全部楼层 |阅读模式
  在.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.tbGuestBookselect 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.tbGuestBookselect new{姓名 = c.UserName,时间 = c.PostTime,消息 = c.Messages,};this.gv.DataSource = resutl;this.gv.DataBind();}//排除重复void SetBindByDistinct(){var resutl = (from c in guestbook.tbGuestBookselect c.UserName).Distinct();this.gv.DataSource = resutl;this.gv.DataBind();}//排序void SetBindByOrderby(){var resutl = from c in guestbook.tbGuestBookorderby c.UserName descending,c.ID ascendingselect new{编号 = c.ID,姓名 = c.UserName,消息 = c.Messages,};this.gv.DataSource = resutl;this.gv.DataBind();}//查询包含void SetBindByContains(){var resutl = from c in guestbook.tbGuestBookwhere 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.tbGuestBookwhere 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.tbGuestBookselect new{编号 = c.ID,姓名 = c.UserName,消息 = c.Messages,}).Take(5);this.gv.DataSource=resutl;this.gv.DataBind();}//分页(排除前面的行数)void SetBindBySkip(){var resutl = (from c in guestbook.tbGuestBookselect new{编号 = c.ID,姓名 = c.UserName,消息 = c.Messages,}).Skip(5);this.gv.DataSource = resutl;this.gv.DataBind();}//ToListvoid SetBindByToList(){var resutl = (from c in guestbook.tbGuestBookselect new{编号 = c.ID,姓名 = c.UserName,消息 = c.Messages,}).ToList();this.gv.DataSource = resutl;this.gv.DataBind();}//分组排序void SetBindByGroup(){var resutl = from c in guestbook.tbGuestBookgroup c by c.UserName into gwhere g.Count()>2orderby g.Count()select new{编号 = g.Key,行数 = g.Count(),};this.gv.DataSource = resutl;this.gv.DataBind();}//************************************************************组合查询********************************************//Union,过滤void SetBindByUnion(){var resutl = (from c in guestbook.tbGuestBookwhere c.UserName.Contains("s")select c).Union(from c in guestbook.tbGuestBookwhere c.UserName.StartsWith("s")select c);this.gv.DataSource = resutl;this.gv.DataBind();}//Contact,不过滤void SetBindByConcat(){var resutl = (from c in guestbook.tbGuestBookwhere c.UserName.Contains("s")select c).Concat(from c in guestbook.tbGuestBookwhere c.UserName.StartsWith("s")select c);this.gv.DataSource = resutl;this.gv.DataBind();}//Intersect,取相交项void SetBindByIntersect(){var resutl = (from c in guestbook.tbGuestBookwhere c.Messages.Contains("1")select c).Intersect(from c in guestbook.tbGuestBookwhere c.UserName.StartsWith("s")select c);this.gv.DataSource = resutl;this.gv.DataBind();}//Except,排除相交项void SetBindByExcept(){var resutl = (from c in guestbook.tbGuestBookwhere c.Messages.Contains("1")select c).Except(from c in guestbook.tbGuestBookwhere c.UserName.StartsWith("s")select c);this.gv.DataSource = resutl;this.gv.DataBind();}//子查询void SetBindByChildren(){var resutl = from c in guestbook.tbGuestBookwhere(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.tbGuestBookwhere new string[]{"1","sdf"}.Contains(c.UserName)select c;this.gv.DataSource = resutl;this.gv.DataBind();}//内连接,排除相同的void SetBindByJoin(){var resutl = (from c in guestbook.tbGuestBookjoing in guestbook.tbGuestBookon c.UserName equals g.Messagesselect 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();}}}
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-298892-1-1.html 上篇帖子: SQL注入攻击零距离 下篇帖子: 常用SQL字符串函数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表