一、 核心配置文件 (hibernate.cfg.xml)
教程特别提示文件名为 hibernate.cfg.xml(非 nhibernate.cfg.xml),需设置为始终复制。
配置重点(对应教程红/绿标注):
- :需改为本地 SQL Server 地址(如
Server=.;Database=NHibernateDemo;...)。 - 需匹配 SQL Server 版本(如
MsSql2012Dialect)。 - 映射程序集:需包含前序的
News.hbm.xml所在程序集。
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<!-- 数据库连接驱动 -->
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<!-- 红色:数据库连接字符串(请按实际修改) -->
<property name="connection.connection_string">
Server=.;Database=NHibernateDemo;Integrated Security=true;
</property>
<!-- 绿色:数据库方言(按版本修改,此处为2012+) -->
<property name="dialect">NHibernate.Dialect.MsSql2012Dialect</property>
<property name="show_sql">true</property>
<!-- 映射文件所在程序集(前序 Mappings 文件夹) -->
<mapping assembly="NHibernateDemo"/>
</session-factory>
</hibernate-configuration>Code language: HTML, XML (xml)
二、 测试数据准备
在 SQL Server 的 dbo.News 表中手动插入测试数据(对应图中 ID=1 的记录):
三、 测试调用代码 (Program.cs)
教程在 Main 方法中通过 SessionManager 获取 Session,并调用 NewsDAL 查询 ID=1 的数据。
注:结合上轮 SessionManager.OpenSession() 的封装,此处调整为更规范的 using 调用,避免资源泄露。
using NHibernate;
using NHibernateDemo.DAL;
using NHibernateDemo.Models;
using System;
namespace NHibernateDemo
{
class Program
{
// 教程原图写法(静态变量):
// private static ISession session;
// private static SessionManager sessionManager = new SessionManager();
// private static NewsDAL newsDal;
static void Main(string[] args)
{
// 规范调用:使用 OpenSession + using 确保关闭
using (ISession session = SessionManager.OpenSession())
{
NewsDAL newsDal = new NewsDAL(session); // 若 DAL 构造需 session
// 教程调用:GetNewsByID(1)
News newsInfo = newsDal.GetNewsByID(1);
if (newsInfo != null)
{
Console.WriteLine($"读取成功,标题:{newsInfo.Title}");
// 图中 WinForm 弹窗显示:"FoxDevelop欢迎"
}
}
Console.ReadKey(); // 保持控制台
}
}
}Code language: JavaScript (javascript)
Previous: 了解Nhibernate的Session
Next: 运行程序和遇到的一些异常