Linq to SQL简单分析

开发 后端
这里探讨一下Linq to SQL中的延迟计算的问题。本篇定位为入门级,只期望给一些初学者或者未接触过Linq的朋友一些提示。

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

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

  1. Table<Post> posts = dbContext.GetTable<Post>();  
  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<Post>()  
  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重要组成部分简介
责任编辑:佚名 来源: 博客园
相关推荐

2009-09-11 09:41:19

LINQ to SQL

2009-09-15 15:09:50

Linq本质

2009-09-09 18:03:47

LINQ to SQL

2009-09-15 10:46:04

LINQ to SQL

2009-09-15 13:53:53

Linq To Sql

2009-09-15 13:37:24

Linq To Sql

2009-09-17 11:29:50

Linq扩展方法

2009-09-15 14:58:26

Linq查询本质

2009-09-08 17:01:54

Linq源元素

2009-09-10 17:53:50

LINQ是什么

2009-09-17 15:51:39

Linq to sql

2009-09-08 14:34:42

Linq to SQL

2009-09-16 09:23:14

LINQ To SQL

2010-08-04 09:55:34

LINQ to SQL

2009-09-08 10:50:20

2009-09-08 14:45:24

Linq to SQL支持SQL Serve

2009-09-09 15:28:43

Linq to obj

2009-09-18 16:00:07

LINQ架构

2009-09-14 10:57:46

LINQ入门

2009-09-15 16:26:36

Linq orderb
点赞
收藏

51CTO技术栈公众号