我有一个使用nHibernate的WCF服务。该方法在table1中保存一个新条目并更新table2中的条目。
我在两个方法中使用了session,并且全局声明了会话。
以下是代码:
private static ISessionFactory SessionFactory;
ISession session = NHibernateHelper.GetCurrentSession();
//webmethod 1
{
using (ITransaction tranx = session.BeginTransaction())
{
session.Save(table1);
tranx.Commit();
}
}
//webmethod2
{
using (ITransaction tranx = session.BeginTransaction())
{
session.Save(table2);
session.Update(table1);
tranx.Commit();
}
}
这里是NHibernateHelper代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NHibernate;
using NHibernate.Cfg;
using System.Reflection;
namespace API
{
public class NHibernateHelper
{
private static ISessionFactory SessionFactory;
private static void OpenSession()
{
Configuration configuration = new Configuration().Configure();
SessionFactory = configuration.BuildSessionFactory();
}
public static ISession GetCurrentSession()
{
if (SessionFactory == null)
NHibernateHelper.OpenSession();
return SessionFactory.OpenSession();
}
public static void CloseSessionFactory()
{
if (SessionFactory != null)
SessionFactory.Close();
}
}
}
我做错了什么?尝试更新table1时,我在第二种方法中遇到错误。