《搭建你的spring.net+nhibernate+asp.netmvc框架》由会员分享,可在线阅读,更多相关《搭建你的spring.net+nhibernate+asp.netmvc框架(29页珍藏版)》请在金锄头文库上搜索。
1、搭建你的 Spring.Net+Nhibernate+Asp.Net Mvc 框架(一)搭建你的环境(转)(一)搭建你的环境(转)使用这套框架不是很长时间。但也基本应用了几个项目中了。在此和大家分享一下我是怎样一步一步搭建此框架的。并为初学者提供一个简单的示范。欢迎共同讨论技术问题。【本人纯属菜鸟!不足之处多谅解!】第一步:首先要看一下我项目中三层与 mvc 以及 Spring.Net,Nhibernate 处在的哪一层。看下面一幅图:先做为一个大体的思路和了解。第二步:了解 Spring.Net 做什么用?http:/ 了解 Nhibernate 干什么用?http:/ Asp.Net Mv
2、c :从零开始学习 ASP.NET MVC 1.0http:/ webcast 上的视频:老赵的关于 Asp.Net Mvc 教程!我本人很喜欢。可以用 IReaper 下载观看。第三步:准备:Spring.Net,Nhibernate 的开发环境,我的使用的版本比较老,但是一直使用着比较稳定,功能也基本满足开发需要,在此就不多说了,在 http:/ 有具体版本的下载和文档,读者可以自行下载。注:VS2008 + sp1 + Asp.Net Mvc 环境都要装上第四步:现在我们的环境搭建的差不多了。然后就开始我们的旅程吧。先写到这,你的环境准备好了吗?(二)创建你的项目(转)(二)创建你的项目
3、(转)本篇文章的目的:首先是创建解决方案。并创建相关的项目。先介绍一下项目的各自的作用:从数据库层到表示层依次为:数据库层:数据库层:1、接口 IDao 层:IDao2、Dao 层实现:HibernateDao 和 SqlDaoHibernateDao:由 Hibernate 实现的 IDao 部分SqlDao:是由我们自己写 sql 实现的部分业务逻辑层:业务逻辑层:1、业务逻辑接口层:IBLL2、业务逻辑接口的实现:BLL3、我们把 Mvc 中的 Model 放到一个单独的项目中:Model表示层:表示层:就是我们的 web 项目。至于你想用 Extjs 等 ui 框架,那就是看你的选择了
4、。现在就开始我们的项目旅程。第一步:第一步:1、新建一个 Web Mvc 项目。如图所示:2、然后依次添加类库项目类库项目。最终解决方案如下图所示:解决方案的框架就基本有型了。不过还只是个空架子。下面我们就开始根据数据库表建立 Model在这说 一下,Model 在一般的开发中,我们最好将其映射到表。因为这样一来对应于 Nhibernate 帮我们实现的面向对象的操作数据库就很好实现了【大家自己去体会】。第二步:第二步:首先看一下我们书库中的表。我准备了一个 User 表。下面是建表的 sql 语句: 代码 CREATE TABLE Hksj_User(Id INT IDENTITY(1 1,
5、1 1) NOT NULL,SName NVARCHAR(2020) NOT NULL,SNickName NVARCHAR(2020),SPassWord NVARCHAR(3030) NOT NULL,DCreateDate DATETIME ,SCreator NVARCHAR(2020),SEmail NVARCHAR(5050),SPhone NVARCHAR(5050),SIdentifyId NVARCHAR(3030),DLastTimeLogOn DATETIMEPRIMARY KEY CLUSTERED(Id ASC)WITH (IGNORE_DUP_KEY = OFF)
6、ON PRIMARY) ON PRIMARYENDGO-添加注释EXEC sys.sp_addextendedproperty name=NMS_Description, value=N登录名 , level0type=NSCHEMA,level0name=Ndbo, level1type=NTABLE,level1name=NHksj_User, level2type=NCOLUMN,level2name=NSNameGOEXEC sys.sp_addextendedproperty name=NMS_Description, value=N邮箱 , level0type=NSCHEMA,l
7、evel0name=Ndbo, level1type=NTABLE,level1name=NHksj_User, level2type=NCOLUMN,level2name=NSEmail数据库截图:数据库有了,那我们就根据数据库表建立 Model 模型吧!在 MyWeb.WebTemp.Model 中添加类文件:User.cs 代码如下:代码 using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace MyWeb.WebTemp.ModelSerializablepub
8、lic class User/ / 用户 id/ public Int32 Idget;set;/ / 用户名,登录所用的名字/ public string Nameget;set;/ / 真实姓名/ public string NickNameget;set;/ / 密码/ public string PassWordget;set;/ / 创建日期/ public DateTime CreateTimeget;set;/ / 创建人/ public string Creatorget;set;/ / Email/ public string Emailget;set;/ / 联系电话/ p
9、ublic string Phoneget;set;/ / 身份证/ public string IdentifyIdget;set;/ / 最后一次登录时间/ public DateTime LastTimeLogOnget;set;注:将 User 设置为 public,原因就不用说了【因为在不同的程序集中引用】先写到这,你的 Model 建立好了吗?(三)实现数据库接口层和业务逻辑层(转)(三)实现数据库接口层和业务逻辑层(转)本篇是介绍我们完成数据库接口层和业务逻辑层的接口的设计和实现。废话不多讲,还是怎么一步一步做。第一步:第一步:设计 IDao 层。在 MyWeb.WebTemp.
10、IDao 项目中添加 IUserDao 接口。代码如下:代码 using System;using System.Collections.Generic;using System.Linq;using System.Text;using MyWeb.WebTemp.Model;namespace MyWeb.WebTemp.IDaopublic interface IUserDao/ / 获取所有的用户/ / IList GetAllUsers();/ / 根据 id 来获取用户/ / / User GetUserById(int Id);/ / 添加用户信息/ / / bool AddUse
11、r(User user);/ / 更新用户信息/ / / bool UpdateUser(User user);/ / 更新或者添加用户信息/ / / bool AddOrUpdateUser(User user);/ / 删除用户/ / / bool DeleteUser(User user);注:要添加 Model 项目的引用。因为我们用到了 User 实体类。第二步:第二步:实现 IDao 设计。在 MyWeb.WebTemp.HibernateDao 项目中添加类文件:UserDaoHibernate.cs在编写代码之前,我们首先要引入 和 Nhibernate 的支持类库。我用到的
12、所有 dll,稍后将提供下载。如果你急需可以通过邮件向我索取:另外要添加 Model 项目的引用。因为我们也用到了实体类。代码如下:代码 using System;using System.Collections.Generic;using System.Linq;using System.Text;using Spring.Data.NHibernate.Generic.Support;using Spring.Data.NHibernate.Generic;using SpringHiberate.dao.model;using NHibernate;using MyWeb.WebTemp
13、.IDao;namespace MyWeb.WebTemp.HibernateDaopublic class UserDaoHibernate : HibernateDaoSupport,IUserDao#region IUserDao 成员public IList GetAllUsers()return HibernateTemplate.LoadAll(); public MyWeb.WebTemp.Model.User GetUserById(int Id)return (MyWeb.WebTemp.Model.User)HibernateTemplate.Execute(new Hib
14、ernateDelegate(delegate(NHibernate.ISession session)StringBuilder sb = new StringBuilder();sb.Append(“from User c where c.Id=?“);IQuery query = session.CreateQuery(sb.ToString();query.SetParameter(0, Id);return query.UniqueResult() as MyWeb.WebTemp.Model.User;), true);public bool AddUser(MyWeb.WebTe
15、mp.Model.User user)if (HibernateTemplate.Save(user) != null)return true;return false;public bool UpdateUser(MyWeb.WebTemp.Model.User user)HibernateTemplate.Update(user);return true;public bool AddOrUpdateUser(MyWeb.WebTemp.Model.User user)HibernateTemplate.SaveOrUpdate(user);return true;public bool DeleteUser(MyWeb.WebTemp.Model.User user)HibernateTemplate.Delete(user);return true;#endregion