[转载]Asp.net MVC 2 + Castle + NHibernate 项目实战(1)
2011-12-10 11:44
375 查看
/article/4696823.html
本文将开始一步一步地使用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
文章中如有不足之处,望大家多指正。
本文将开始一步一步地使用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
文章中如有不足之处,望大家多指正。
相关文章推荐
- Asp.net MVC 2 + Castle + NHibernate 项目实战(1)
- 【转载】ASP.NET Core 中间件详解及项目实战
- asp.net MVC+NHibernate项目开发日志
- ASP.NET MVC + ADO.NET EF 项目实战(三):引入jQuery
- NHibernate3.2+Asp.net MVC3+Extjs 4.0.2项目实践(一):基本概要
- asp.net mvc3+EF4.1项目实战
- Asp.net MVC 示例项目"Suteki.Shop"分析之---NHibernate
- ASP.NET MVC + ADO.NET EF 项目实战(二):设计过程与设计工具
- ASP.NET MVC + ADO.NET EF 项目实战(三):引入jQuery
- 【转载】基于ASP.NET MVC 3的企业应用项目总结
- ASP.NET MVC + ADO.NET EF 项目实战(二):设计过程与设计工具
- 第八话 Asp.Net MVC 3.0【MVC项目实战の四】
- Asp.net MVC 示例项目"Suteki.Shop"分析之---NHibernate
- 【转载】使用Json比用string返回数据更友好,也更面向对象一些 |Asp.net MVC 2.0 + Unity 2.0(IoC) + EF4.0 实例:RoRoWoBlog 开源项目框架代码
- NHibernate3.2+Asp.net MVC3+Extjs 4.0.2项目实践(六):Extjs Grid,Window,Form实现增删改操作
- ASP.NET MVC企业级项目框架搭建实战
- Asp.net MVC 示例项目"Suteki.Shop"分析之---NHibernate
- ASP.NET MVC + ADO.NET EF 项目实战(一):应用程序布局设计
- 图文详解远程部署ASP.NET MVC 5项目 [转载]
- Asp.Net MVC 3.0【MVC实战项目の一】