您的位置:首页 > 其它

在nhibernate使用过程中遇到的几个问题02

2004-11-25 16:57 861 查看
1.可以建立这样一个类帮助简化程序的初始化。

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类型。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: