Я следующую конфигурацию:Servicestack NHibernate Auth Repo Нет CurrentSessionContext сконфигурировано
_container = new WindsorContainer();
var factory = new SessionFactoryManager().CreateSessionFactory();
_container.Register(Component.For<NHibernate.ISessionFactory>().Instance(factory));
А потом в другом месте у меня есть:
var authRepo = new NHibernateUserAuthRepository (_container.Resolve<NHibernate.ISessionFactory>());
_container.Register (Component.For<IAuthRepository>().Instance(authRepo));
public class SessionFactoryManager
{
public ISessionFactory CreateSessionFactory()
{
try {
var autoMap = AutoMap.AssemblyOf<Artist>()
.Where(t => typeof(Entity).IsAssignableFrom(t))
.UseOverridesFromAssemblyOf<LocationMappingOverride>();
return Fluently.Configure()
.Database(PostgreSQLConfiguration.PostgreSQL82.ConnectionString(c => c.FromConnectionStringWithKey("ConnectionString")).AdoNetBatchSize(50))
.Mappings(m => m.AutoMappings.Add(autoMap))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<ServiceStack.Authentication.NHibernate.UserAuthMap>())
.ExposeConfiguration(TreatConfiguration)
.BuildSessionFactory();
} catch (Exception ex) {
var m = ex;
}
return null;
}
protected virtual void TreatConfiguration(NHibernate.Cfg.Configuration configuration)
{
configuration.SetProperty("generate_statistics", "true");
configuration.SetProperty("current_session_context_class", "thread");
var update = new SchemaUpdate(configuration);
update.Execute(false, true);
}
}
Это все работает для остальной части моего приложения, но когда я пытаюсь использовать что-нибудь сделать с Идентом репо NH я получаю:
No CurrentSessionContext configured (set the property current_session_context_class)!
любых получил какую-либо улику gwarn в?
[UPDATE]
В моем AppHost.Configure
методе я добавил следующее:
this.GlobalRequestFilters.Add ((req, res, vm) => {
CurrentSessionContext.Bind(container.Resolve<NHibernate.ISession>());
});
Чтобы без толку - я понятия не имею, как я бы распоряжаться, что: р
также Я запутался, так как ISessionFactory вводится как любая другая часть моего приложения:
Значит, это должно быть всего работы?
Arrr ok, так что это называется формой auth, которая находится в DLL, а остальная часть моего приложения с радостью создает сеанс, когда это необходимо. Хорошо ли это делать в фильтрах запросов/ответов? даже если он используется только для файлов auth? – iwayneo
Я добавил обновление @Ricardo Peres – iwayneo