一、NHibernate的介绍和程序包的引入
介绍:NHibernate是一个面向.NET环境(只能用C#做开发)的对象/关系数据库(MySQL或者其他数据库)映射工具。可以理解为一个中间件,有封装好的数据库接口,便于代码对数据库的访问。
程序包的导入如下图:
二、一些基础配置
三、数据库连接配置
nhibernate.cfg.xml文件的内容
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="dialect">NHibernate.Dialect.MySQL5Dialect</property>
<property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
<property name="connection.connection_string">server=localhost;Database=mygamedb;User ID=root;Password=root</property>
<property name="show_sql">true</property>
</session-factory>
</hibernate-configuration>
四、类和表的映射
User.hbm.xml 配置文件内容、配置文件属性的设置
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="NHibernateMySQL"
namespace="NHibernateMySQL.Model">
<class name="User" table="users">
<id name="ID" column="id" type="Int32">
<generator class="native"></generator>
</id>
<property name="Username" column="username" type="String"></property>
<property name="Password" column="password" type="String"></property>
<property name="Registedate" column="registedate" type="Date"></property>
</class>
</hibernate-mapping>
五、解析两个xml文件并进行添加操作,运行后你就可以在数据中看到插入的内容。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NHibernate;
using NHibernate.Cfg;
using NHibernateMySQL.Model;
namespace NHibernateMySQL
{
class Program
{
static void Main(string[] args)
{
var configuration = new Configuration();
configuration.Configure("nhibernate.cfg.xml");//解析 nhibernate.cfg.xml文件,要求此文件要打包到.exe中
configuration.AddAssembly("NHibernateMySQL");//解析映射文件 User.hbm.xml
AddData(configuration);
Console.ReadKey();
}
static void AddData(Configuration configuration)
{
ISessionFactory sessionFactory = null;
ISession session = null;
try
{
sessionFactory = configuration.BuildSessionFactory();
session = sessionFactory.OpenSession();//打开一个与数据库的会话
User user = new User()
{
Username = "貂蝉",
Password = "diaochan"
};
session.Save(user);
}
catch (Exception e)//捕捉异常
{
Console.WriteLine(e.ToString());
}
finally//任何情况都会执行
{
if (sessionFactory != null)
{
sessionFactory.Close();
}
if (session != null)
{
session.Close();
}
}
}
}
}