Welcome

首页 / 脚本样式 / ExtJS / Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 3 ----数据访问层

Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 3 ----数据访问层2010-07-17 博客园 孤独侠客在上一篇中,我们已经搭建起了整个解决方案的项目,并且建好了数据库,完成了实体类和Nhibernate映射文件.在本文中,将定义数据访问接口,并利用Nhibernate实现接口,利用Spring.net配置起来dao.并对其进行单元测试.

数据访问层也和Petshop等框架一样,分为数据访问的接口以及实现,不过这里的数据访问实现相比之下就清晰和明显了的多,Nhibernate本身就是支持多数据库的,所以这样做不是为了多数据库,而是为了Nhibernate的可插拨,即使哪一天发现由于一些问题,比如说性能问题,可以重新实现IDAL接口,而不会对业务层造成比较大的改动.

说到这里,其实我们还不太清楚前台到底需要哪些功能,所以我们就先简单的实现实体的增删改查吧.等需要其它的功能时,再来完善接口和实现.

DirectCenter.IDAL不依赖于Spring或者是Nhibernate,只需要添加项目引用DirectCenter.Model.以用户来说吧,添加接口IUserDao.cs

IUserDao.cs
using System.Collections;
using DirectCenter.Model;
namespace DirectCenter.IDAL
{
public interface IUserDao
{
User FindById(string userId);
void Delete(User user);
User Save(User user);
User SaveOrUpdate(User user);
}
}

同样,我们添加ICompanyDao和IDepartmentDao.

接下来,我们实现刚才的数据接口,DirectCenter.DAL项目中添加对DirectCenter.IDAL和DirectCenter.Model的项目引用,然后再添加引用Spring.Data.NHibernate20,Spring.Data,Spring.Core(在lib/Spring.net下面).

一种方式是可以直接使用Nhibernate完成数据访问:

UserDao.cs
public User Save(User user)
{
//通过一种方式获取Session
Session session = SessionFactory.OpenSession();
session.Save(user);
}