本系列文章导航
走进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
How Do I第一篇,难度系数50,定位为入门级。
上一篇对Linq to SQL做了一个大致的介绍,从这一篇起,将对要完成一项Linq to SQL的Case要做的一些事情,主要从细节上做一些讲解。不会很深入,但是却又是必须的。为了使讲解不落于泛泛而谈,我们首先来构建实例:
还是以博客园的系统为例子,既然称Linq to SQL为一个ORM框架,ORM,对象-关系 映射,既然O在前关系在后,说明O为重,关系是根据O得来的,那么我们就先新建一些Entity Object吧。在一个博客系统里最常见的就是User,Blog,Post。
一个用户有且仅有一个博客,而一个博客可以有零篇或者多篇博客文章。根据这个描述我们来建立Entity:
Step 1 建立实体对象

User

/**////
/// 用户类
///
public class User


{

/**////
/// 用户标识
///

public int Id
{ get; set; }

/**////
/// 该用户对应的博客,
/// 一个用户有且仅有一个博客
///

public Blog Blog
{ get; set; }

/**////
/// 用户名
///

public string UserName
{ get; set; }

/**////
/// 密码
///

public string Password
{ get; set; }

/**////
/// 昵称
///

public string NickName
{ get; set; }

/**////
/// 用户离开时间
///

public DateTime LeaveTime
{ get; set; }
}

Blog

/**////
/// 博客类
///
public class Blog

{

/**////
/// 博客标识
///

public int Id
{ get; set; }

/**////
/// 用户标识,和用户相关联
///

public int UserId
{ get; set; }

/**////
/// 博客的中文名
///

public string Name
{ get; set; }

/**////
/// 创建时间
///

public DateTime CreateDate
{ get; set; }

/**////
/// 一个博客有零篇或多篇文章
///

public IList<Post> Posts
{ get; set; }
}

Code

/**////
/// 博客文章类
///
public class Post


{

/**////
/// 文章Id
///

public int Id
{ get; set; }

/**////
/// 文章从属的博客
///

public int BlogId
{ get; set; }

/**////
/// 标题
///

public string Title
{ get; set; }

/**////
/// 内容
///

public string Body
{ get; set; }

/**////
/// 发表时间
///

public DateTime CreateDate
{ get; set; }
}
我们先不要谈论这个设计是否合理,也不要谈论这三个实体是贫血模型还是充血模型。
对象建立好了,我们来建设数据库表吧:users表,blogs表,posts表(为什么表都用复数从Rails里学过来的,ActiveRecord模式里,表里每条记录都对应着一个对象,所以表用复数表示,这是一种约定)
Step 2:创建数据库表
Users表:

Blogs表:

Posts表:

我们注意到,用户类里的LeaveTime离开时间在数据库里并没有对应的字段,因为这个是用来临时记路用户离开离开博客园的时间的,这样可以用来做一些在线统计,所以无需持久化。
继续>>下一页
[第1页][第2页][第3页][第4页][第5页]
1
0
标签: LINQLINQ to SQL
上一篇: