using System;
using System.Reflection;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Dialect;
namespace Yx.Pacs.ImageServer.Data
{
/// <summary>
/// SessionHelper 的摘要说明。
/// </summary>
public class SessionHelper
{
private static ISessionFactory sessions;
private static Configuration cfg;
private static Dialect dialect;
private static bool inited;
public static ISessionFactory SessionFactory
{
get
{
if (!inited) Init();
return sessions;
}
}
public static Configuration Configuration
{
get
{
if (!inited) Init();
return cfg;
}
}
public static Dialect Dialect
{
get
{
if (!inited) Init();
return dialect;
}
}
public static ISession OpenSession()
{
if (!inited) Init();
return sessions.OpenSession();
}
private static void Init()
{
string[] files = new string[]{"Study.hbm.xml"};
cfg = new Configuration();
for (int i=0; i<files.Length; i++)
cfg.AddResource("Hel420.Test.Data.hbm." + files[i], Assembly.Load("Hel420.Test"));
dialect = Dialect.GetDialect();
sessions = cfg.BuildSessionFactory( );
inited = true;
}
}
}
2.Session在使用Load方法的时候特别挑剔。
比如: Study study = (Study)session.Load(typeof(Study), 1L);
如果Study的Id是Long类型的话,就必须加L,否则会出现错误。
而起如果传进来的是Int32的话,就必须转换成Int64类型。

浙公网安备 33010602011771号