ASP.NET MVC4 中整合 NHibernate3.3

25 篇文章 0 订阅
22 篇文章 0 订阅

本文使用Mysql 5.1.6数据库,使用的Mysql.Data.dll是5.2.3,在测试环境下,Mysql.Data.dll 5.2.3访问Mysql 5.1.6是正常的,但不保证能稳定运行。

注:文章最后附源码地址。


下面说下详细的搭建步骤:

1、先部署数据库

这个网上太多,这里就不说了。

部署后创建测试库“lmj”,建议找个客户端工具使用,如SQLyog。然后再创建个测试表:

CREATE TABLE `user` (
  `CODE` varchar(50) NOT NULL,
  `NAME` varchar(50) NOT NULL,
  `AGE` int(11) NOT NULL,
  PRIMARY KEY (`CODE`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

最后再插入两条测试数据:

insert  into `user`(`CODE`,`NAME`,`AGE`) values ('101','崔北为',30),('102','李军',29);


2、创建Model项目

创建测试表User的实体类:

namespace LMJ.Model
{
    public class User
    {
        public String Code { get; set; }
        public String Name { get; set; }
        public int Age { get; set; }
    }
}
完成后创建 Hibernate 映射文件,该文件放在Model项目中的Mapping文件夹中(Hibernate会搜索到):

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="LMJ.Model" assembly="LMJ.Model">
	<class name="User" table="·user·" lazy="false">
		<id name="Code" column="Code" type="String">
			<generator class="assigned" />
		</id>
		<property name="Name" column="Name" type="String" length="50" />
		<property name="Age" column="Age" type="int" />
	</class>
</hibernate-mapping>

3、创建MVC4项目

向解决方案中添加一个ASP.NET MVC4项目(本人用的是VS2012,安装后直接含有),名称为“Web”,然后引入如下4个DLL:



4、创建hibernate配置

在MVC4项目根目录下创建 hibernate.cfg.xml ,内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
	<session-factory>
		<!-- properties -->
		<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
		<property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
		<property name="connection.connection_string">Database=lmj;Data Source=localhost;User Id=root;Password=root</property>
		<property name="dialect">NHibernate.Dialect.MySQL5Dialect</property>
		<property name="show_sql">true </property>
		<property name="hbm2ddl.keywords">none</property>
		<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
		
		<mapping assembly="LMJ.Model"/>
	</session-factory>
</hibernate-configuration>

如果是连接SQL SERVER 2008,配置是这样的:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
	<session-factory>
		<!-- properties -->
		<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
		<property name="connection.driver_class">NHibernate.Driver.Sql2008ClientDriver</property>
		<property name="connection.connection_string">Database=lmj;Data Source=localhost;User Id=sa;Password=root</property>
		<property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
		<property name="show_sql">true </property>
		<property name="hbm2ddl.keywords">none</property>
		<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
		
		<mapping assembly="LMJ.Model"/>
	</session-factory>
</hibernate-configuration>

由于hibernate的配置还是比较复杂的,配置节点太多,很多配置本人也未深入研究,不敢乱猜。其中的“mapping”中配置的是实体类的命名空间,hibernate会自动在该命名空间下搜索所有实体类以及它的映射文件,有java开发经常的比较清楚这个。

5、使用hibernate

由于这个demo比较简单,目的是搭建开发环境,这里没有集成Spring.NET框架,后面我会单独写个文章来详细介绍。

在MVC4中创建一个控件器,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Collections;
using NHibernate;
using NHibernate.Cfg;

namespace LMJ.Web.Areas.Manage.Controllers
{
    public class UserController : Controller
    {
        public ActionResult Index()
        {
            int i = 0;
            ISessionFactory sessionFactory = new Configuration().Configure().BuildSessionFactory();
            ISession session = sessionFactory.OpenSession();
            if (session != null)
            {
                IList results = session.CreateQuery("from User").List();
                i = results.Count;

                session.Close();
            }

            ViewData["message"] = "数据集总数:" + i;
            return View();
        }

    }
}

搞过MVC2、3的朋友一眼能看出,我这里创建了一个Area,名称是“Manage”,是访问Url的一部分。

再创建个视图:

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div>
        @ViewData["message"]
    </div>
</body>
</html>


6、测试访问

访问地址类似于:http://localhost:8001/Manage/User/Index,具体路径要以你的配置为准。


本人写的简单,如果对MVC不熟悉可以查阅下相关的资料。

最后,我把项目的源代码放上:http://download.csdn.net/detail/xz2001/4942910


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值