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
文章中如有不足之处,望大家多指正。
在开始之前,我先对这三个组件做一个简单的介绍:
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)
- NHibernate3.2+Asp.net MVC3+Extjs 4.0.2项目实践(四):Web主程序结构和界面
- Asp.net MVC 示例项目"Suteki.Shop"分析之---NHibernate
- 搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (二)创建你的项目
- NHibernate3.2+Asp.net MVC3+Extjs 4.0.2项目实践(一):基本概要
- NHibernate3.2+Asp.net MVC3+Extjs 4.0.2项目实践(二): NHibernate数据访问层实现
- 搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (二)创建你的项目
- asp.net MVC+NHibernate项目开发日志
- ASP.NET MVC + ADO.NET EF 项目实战(一):应用程序布局设计
- ASP.NET MVC + ADO.NET EF 项目实战(一):应用程序布局设计 推荐
- ASP.NET Core 2.0 MVC项目实战
- 第七话 Asp.Net Mvc 3.0【MVC项目实战の三】
- ASP.NET MVC + ADO.NET EF 项目实战(二):设计过程与设计工具
- NHibernate3.2+Asp.net MVC3+Extjs 4.0.2项目实践(五):Extjs树形导航菜单
- ASP.NET MVC + ADO.NET EF 项目实战(二):设计过程与设计工具
- NHibernate3.2+Asp.net MVC3+Extjs 4.0.2项目实践(六):Extjs Grid,Window,Form实现增删改操作
- ASP.NET MVC + ADO.NET EF 项目实战(三):引入jQuery
- 搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (二)创建你的项目(转)
- Asp.net MVC 示例项目"Suteki.Shop"分析之---NHibernate
- ASP.NET MVC + ADO.NET EF 项目实战(三):引入jQuery