本文使用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