Linq to SQL简单分析
创始人
2024-06-06 11:41:06
0

本文向大家介绍Linq to SQL,可能好多人还不了解Linq to SQL,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。

本系列的文章到现在为止都是在介绍查询,难道Linq to SQL只能做查询么?不能向数据库添加数据?,肯定不是的:

  1. Table posts = dbContext.GetTable();  
  2. //先实例化一个新的要插入的对象  
  3. Post post = new Post();  
  4. post.BlogId = 2;  
  5. post.Title = "test";  
  6. post.Body = "test,test,test,test";  
  7. post.CreateDate = DateTime.Now;  
  8. //调用Table的InsertOnSubmit方法  
  9. posts.InsertOnSubmit(post);  
  10. //把改变提交到数据库,这个时候才真正执行了  
  11. dbContext.SubmitChanges();  
  12. //提交修改后,你就可以查询新插入的post的Id了  
  13. Console.WriteLine(post.Id); 

一个简单的不能再简单的insert into语句,加上一条返回新插入记录的标识值的语句。

如果你按照本文所说的一步步往下来,在执行上面的插入的时候肯定会碰到异常,这是因为,Id对应的数据表字段postid是该表的主键,你不应该在插入的时候赋值,有人说我实例化对象的时候确实没有给post的Id属性赋值啊,但是.net会在后台为我们将Id赋值为0,所以你要对映射对象做一下修改:

  1. [Column(Name="postid",IsPrimaryKey=true,IsDbGenerated=true)]  
  2. public int Id { get; set; } 

不仅仅数据表的主键要加这个属性,如果对于那些在数据库里设置了默认值的,你并不像用程序插入的时候,你也得使用,比如这里的CreateDate。

可以插入肯定就可以更新了,下面就来看看如何更新呢:

做更新的时候,你首先得从数据库查询出该对象,然后对该对象的属性进行修改,最后更新到数据库:

  1. var posts = from post in dbContext.GetTable()  
  2. where post.BlogId == 2  
  3. select post;  
  4. foreach (var post in posts)  
  5. post.BlogId = 5;  
  6.  
  7. dbContext.SubmitChanges(); 

Linq to SQL也会自动的帮你生成Update语句了。

有了插入,更新,查询就差一个Delete CURD就全了,对于delete更简单了,你只要调用Table的DeleteOnSubmit方法就行了,这里就不再详述。

这篇文章主要关注How Do I上面,对一个简单的单表CURD做一个比较全面的介绍,下一篇会更深入一些,将会涉及到多表的连接,两个表之间的关系怎样反应到映射上来,还将探讨一下Linq to SQL中的延迟计算的问题。本篇定位为入门级,只期望给一些初学者或者未接触过Linq的朋友一些提示。

【编辑推荐】

  1. LINQ查询操作经验总结
  2. LINQ遍历多个数组深入剖析
  3. Linq查询Access数据文件浅谈
  4. LINQ构建框架设计学习笔记
  5. LINQ重要组成部分简介

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...