如何从ISessionFactory获取NHibernate配置

时间:2011-10-18 09:18:34

标签: nhibernate configuration fluent-nhibernate

有没有办法从NHibernate中的ISessionFactory实例获取配置详细信息?

4 个答案:

答案 0 :(得分:2)

ISessionFactory不会公开用于创建会话工厂的配置,我也不确定具体的实现是否也是如此。

但是,为什么不考虑将配置注入?也许你没有使用依赖注入,如果你这样做,只需将它注册到内核中即可。

否则,请考虑使用保留配置和ISessionFactory的包装类。

答案 1 :(得分:1)

如果您使用app.confighibernate.xml.cfg,请使用以下内容公开配置:

NHibernate.Cfg.Configuration normalConfig = new NHibernate.Cfg.Configuration().Configure();

我在配置会话工厂时传递了上述内容,我只是在静态会话工厂类中公开了这个配置对象。

答案 2 :(得分:1)

我编写了一个扩展类,它通过哈希表映射会话工厂和配置。您可以在代码的任何位置轻松获取会话工厂的配置,但必须先为工厂设置配置。

public static class SessionFactoryConfigurationBindingExtension
{
    private static readonly Dictionary<ISessionFactory, Configuration> _mappings = new Dictionary<ISessionFactory, Configuration>();
    private static readonly Object _mappingsLocker = new Object();

    public static Configuration GetConfiguration(this ISessionFactory sessionFactory)
    {
        lock (_mappingsLocker)
        {
            if (_mappings.ContainsKey(sessionFactory))
            {
                return _mappings[sessionFactory];
            }
            else
            {
                return null;
            }
        }
    }

    public static void SetConfiguration(this ISessionFactory sessionFactory, Configuration configuration)
    {
        lock (_mappingsLocker)
        {
            _mappings[sessionFactory] = configuration;
        }
    }
}

答案 3 :(得分:0)

从会话I使用以下内容 Session.Connection.ConnectionString;

我的课是 UserIO : Base<User> 用户是实体。