流畅的NHibernate OpenSession无法打开新会话

时间:2013-12-07 15:16:15

标签: c# oracle fluent-nhibernate

我正在使用Fluent nHibernate和Oracle数据库。我工作正常,但有一个问题,我无法弄明白。

我试图创建新的会话,在previos被杀之后。但是在pl / sql开发人员的会话列表中没有新会话,第二个会话中的查询抛出异常,就像在第一个会话中一样。所以我的问题是我做错了什么或者我错过了什么。

public static class FluentNHibernateHelper
{
    private static ISessionFactory _sessionFactory;
    public static ISessionFactory SessionFactory
    {
        get
        {
            if (_sessionFactory == null)
            {
                var dbConfig = OracleDataClientConfiguration.Oracle10
                  .ConnectionString(c => c.Is(RmsConnection.ConnectionString))
                  .ShowSql()
                  .FormatSql()
                  .Driver<OracleDataClientDriver>();

                _sessionFactory = Fluently.Configure()
                    .Database(dbConfig)
                    .Mappings(m => m.FluentMappings.AddFromAssemblyOf<RmsDu.Data.Model.MessageHead>())
                    .BuildSessionFactory();
            }
            return _sessionFactory;
        }
    }

    /// <summary>
    /// Open new db session 
    /// </summary>
    /// <returns></returns>
    public static ISession OpenSession()
    {
        return SessionFactory.OpenSession();
    }

}

    [Test]
    public void SessionKillTest()
    {
        try
        {
            using (var session = FluentNHibernateHelper.OpenSession())
            {
                var q = session.Query<Data.Model.MessageType>();
                //Here we kill first session
                q.ToList();
            }
        }
        catch (Exception ex) {}

        using (var session = FluentNHibernateHelper.OpenSession())
        {
            var q = session .Query<Data.Model.MessageType>();
            q.ToList();
        }
    }

1 个答案:

答案 0 :(得分:-1)

答案是你必须在会话部署之前手动配置session.Connection