原文地址:blog.liujunliang.com.cn
接着上一篇文章内容继续开发
源码下载地址:点击打开链接
上一片篇文章介绍使用NHibernate完成类和数据库表的映射
本文将对NHibernate数据进行简单封装,方便在PhotonServer服务器中进行调用
using NHibernate;
using NHibernate.Cfg;
using MyGameServer.Domain;
using NHibernate.Criterion;
using System.Collections.Generic;
namespace MyGameServer.Helper
{
public static class NHibernateHelper
{
private static ISessionFactory sessionFactory = null;
private static ISession session = null;
public static ISession GetSession
{
get
{
if (sessionFactory == null)
{
Configuration cfg = new Configuration();
//解析固定路径配置文件nhibernate.cfg.xml
cfg.Configure();
//映射目标程序集 解析映射文件 Student.xml ......
cfg.AddAssembly(typeof(Student).Assembly);
//获取会话对象
sessionFactory = cfg.BuildSessionFactory();
}
session = sessionFactory.OpenSession();
return session;
}
private set { }
}
//添加行
public static void AddData<T>(T t)
{
using (ISession session = GetSession)
{
using (ITransaction transaction=session.BeginTransaction())
{
GetSession.Save(t);
transaction.Commit();
}
}
}
//添加列
public static void RemoveData<T>(T t)
{
using (ISession session = GetSession)
{
using (ITransaction transaction = session.BeginTransaction())
{
GetSession.Delete(t);
transaction.Commit();
}
}
}
//通过ID获取对象
public static T GetDataById<T>(int id)
{
using (ISession session = GetSession)
{
using (ITransaction transaction = session.BeginTransaction())
{
T t = session.Get<T>(id);
transaction.Commit();
return t;
}
}
}
/// <summary>
/// 通过名称获取对象
/// </summary>
/// <typeparam name="T">需要获取的对象</typeparam>
/// <param name="dataBaseName">在数据库中的列名称</param>
/// <param name="targetName">获取对象的目标名</param>
/// <returns></returns>
public static T GetDataByName<T>(string dataBaseName, string targetName)
{
using (ISession session = GetSession)
{
T t = session.CreateCriteria(typeof(T)).Add(Restrictions.Eq(dataBaseName, targetName)).UniqueResult<T>();
return t;
}
}
/// <summary>
/// 得到表内的全部对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static ICollection<T> GetAllUsers<T>()

最低0.47元/天 解锁文章
2043





