您的位置:首页 > 编程语言 > ASP

Asp.net MVC 2 + Castle + NHibernate 项目实战(1)

2010-09-28 13:00 519 查看
本文将开始一步一步地使用Asp.net MVC 2 + Castle + NHibernate 开发一个项目。

在开始之前,我先对这三个组件做一个简单的介绍:

Asp.net MVC

它是微软提供的一个基于MVC标准的Web开发模式,其典型特点是有控制器和视图;在这之前,.NET下的Web开发模式大多是采用WebForm,其典型特点是服务端控件和后台触发事件;

NHibernate

它是一个ORM框架,使用Java的SSH做过项目开发的人就非常熟悉了,当前最新版本为NHibernate 3.0,听说完全支持Linq查询语句了,以前只支持HQL语句。

Castle

它是一个非常大的框架,包含IoC、MVC、ORM、AOP等,这次我只用到其IoC的功能。

关于IoC

IoC的英文是Inversion of Control,中文意思是控制反转,也有称其为Dependence Injection,中文意思是依赖注入,也就是DI;

除了Castle可以作IoC 外,还有著名的Spring.Net、Unity等,在我另外一个开源博客项目 http://rorowo.codeplex.com/ 中就用到了微软的Unity 2.0作为IoC。

好了,废话不多说,下面开始。

首先,第一步是创建一个解决方案,项目结构如下:

代码

/// <summary>

///GetById 的测试

///</summary>

[TestMethod()]

public void GetByIdTest()

{

SessionManager sessionManager = new SessionManager();

ISession session = sessionManager.GetSession();

BlogCategoryRespository target = new BlogCategoryRespository(session);

int cateId = 3;

Blogcategory actual;

actual = target.GetById(cateId);

Assert.AreEqual(cateId, actual.Cateid);

}

/// <summary>

///From 的测试

///</summary>

[TestMethod()]

public void FromTest()

{

SessionManager sessionManager = new SessionManager();

ISession session = sessionManager.GetSession();

BlogCategoryRespository target = new BlogCategoryRespository(session);

IList<Blogcategory> actual;

actual = target.From();

Assert.IsTrue(actual.Count > 0);

}

/// <summary>

///Select 的测试

///</summary>

[TestMethod()]

public void SelectTest()

{

SessionManager sessionManager = new SessionManager();

ISession session = sessionManager.GetSession();

BlogCategoryRespository target = new BlogCategoryRespository(session);

IList<int> actual;

actual = target.Select();

Assert.IsTrue(actual.Count > 0);

}

/// <summary>

///Where 的测试

///</summary>

[TestMethod()]

public void WhereTest()

{

SessionManager sessionManager = new SessionManager();

ISession session = sessionManager.GetSession();

BlogCategoryRespository target = new BlogCategoryRespository(session);

IList<Blogcategory> actual;

actual = target.Where();

Assert.IsTrue(actual.Count > 0);

}

/// <summary>

///GetGreaterThan 的测试

///</summary>

[TestMethod()]

public void GetGreaterThanTest()

{

SessionManager sessionManager = new SessionManager();

ISession session = sessionManager.GetSession();

BlogCategoryRespository target = new BlogCategoryRespository(session);

int CateId = 0; // TODO: 初始化为适当的值

IList<Blogcategory> actual;

actual = target.GetGreaterThan(CateId);

Assert.IsTrue(actual.Count > 0);

}

测试结果全部绿灯通过:



下一篇,我将谈谈如何配置一对多和多对多的表映射关系。

该例子的完整代码可以到开源平台下载,地址: http://rorowoproject.codeplex.com

文章中如有不足之处,望大家多指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: