您的位置:知识库 » 数据库

走进Linq-Linq to SQL How do I(1)

作者: 横刀天笑  来源: 博客园  发布时间: 2008-09-23 18:57  阅读: 14423 次  推荐: 2   原文链接   [收藏]  

系列文章导航:

走进Linq--Linq横空出世篇

走进Linq-辉煌的背后

走进Linq-Linq大观园

不能不说的C#特性-对象集合初始化器

不能不说的C#特性-匿名类型与隐式类型局部变量

不能不说的C#特性-扩展方法

不能不说的C#特性-匿名方法和Lambda表达式

不能不说的C#特性-迭代器(上)及一些研究过程中的副产品

不能不说的C#特性-迭代器(下),yield以及流的延迟计算

走进Linq-Linq to Objects(上)基础篇

走进Linq-Linq to Objects(下)实例篇

走进Linq-Linq to SQL感性认识篇

走进Linq-Linq to SQL How do I(1)

走进Linq-Linq to SQL How do I(2)

走进Linq-Linq to SQL How do I(3)

走进Linq-How do I(4)拾遗补零篇第一节

走进Linq-Linq to SQL源代码赏析 Table的获取过程

走进Linq-Linq to SQL源代码赏析之Provider的初始化

走进Linq-Linq to SQL源代码赏析,通过Linq to SQL看Linq


Step 3:建立映射

对象也有了,关系也有了,那剩下的是什么?对,就是映射,我们怎样将对象映射到数据库表上?

我们从最简单的Post开始吧:

/// 
    
/// 博客文章类
    
/// 这个类和数据库里的posts表对应,由于
    
/// 类名和表名不一样,所以需要显式的指明Table特性的Name属性
    
/// 如果是一致的则无需指明了
    
/// 
    [Table(Name="posts")]
    
public class Post
    {
        
/// 
        
/// 文章Id
        
/// 这个对应posts表里的postid
        
/// 这个字段还是一个主键,所以Column特性的IsPrimaryKey属性为true
        
/// 
        [Column(Name="postid",IsPrimaryKey=true)]
        
public int Id { getset; }
        
/// 
        
/// 文章从属的博客
        
/// 这个对应着表里的blogid,名字一样所以只需要加个Column特性就可以了
        
/// 下面几个也是一样的意思
        
/// 
        [Column]
        
public int BlogId { getset; }
        
/// 
        
/// 标题
        
/// 
        [Column]
        
public string Title { getset; }
        
/// 
        
/// 内容
        
/// 
        [Column]
        
public string Body { getset; }
        
/// 
        
/// 发表时间
        
/// 
        [Column]
        
public DateTime CreateDate { getset; }
}
仔细看看注释里面的说明,很简单吧,在类上面加Table特性,属性上加Column特性。

映射建完了,我们可以施加一些操作了。

在上一篇文章里介绍了,Linq to SQL的入口点是DataContext类,这个类主要做这么几件事情:

将我们用C#写的这个查询翻译成SQL语句,当然也并不是他全权负责翻译工作。

执行查询

连接的管理,这样我们就不用写啥Connection了啊,也不用担心数据库的连接和关闭的问题。

Step 4:执行查询

那我们就首先实例化一个DataContext类吧(为了好测试,使用一个控制台程序)

DataContext dbContext = new DataContext(ConfigurationManager.ConnectionStrings["CnBlogs"].ConnectionString);

从这里可以看出,DataContext需要一个连接字符串,在DataContext里,我们打交道最多的就是GetTable()方法,这里的TEntity就是我们上面的那个Post了,带有映射的实体,这个方法返回一个Table对象:

Table<TEntity> posts = dbContext.GetTable<Post>();
实际上,Table实现了IEnumerable接口,那这里实际上是返回了一个IEnumerable系列,那我们可以对posts进行遍历了:
foreach(var post in posts)
       Console.WriteLine(post.Title);
2
0
标签:LINQ LINQ to SQL

数据库热门文章

    数据库最新文章

      最新新闻

        热门新闻