有没有办法从NHibernate中的ISessionFactory实例获取配置详细信息?
答案 0 :(得分:2)
ISessionFactory不会公开用于创建会话工厂的配置,我也不确定具体的实现是否也是如此。
但是,为什么不考虑将配置注入?也许你没有使用依赖注入,如果你这样做,只需将它注册到内核中即可。
否则,请考虑使用保留配置和ISessionFactory的包装类。
答案 1 :(得分:1)
如果您使用app.config
或hibernate.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>
用户是实体。