Моя основная проблема заключалась в том, что я пытался разрешить свой класс со следующей подписью:
public DatabaseSchemaSynchronisationService(IDatabaseService databaseService, IUserSessionManager userSessionManager)
Это было в принципе бесполезно для меня, потому что у моего usersessionmanager не было активного NHibernate.ISession, потому что соединение с моимБаза данных еще не была создана.Я пытался проверить, было ли у меня соединение, и только затем разрешить этот класс, который служил в качестве службы для запуска сценариев обновления базы данных.
При изменении всего класса для выполнения сценариев другим способомвсе, что мне было нужно в подписи его конструктора:
public DatabaseSchemaSynchronisationService(ISessionFactory sessionFactory)
Это позволило мне открыть мой собственный сеанс.Однако мне пришлось сначала проверить, было ли готово соединение, прежде чем пытаться разрешить класс, но иметь IDatabaseSchemaSynchronisationService в качестве параметра для конструктора другого класса;этот класс также разрешается где-то, где я не могу проверить соединение с БД, было плохой идеей.
Вместо этого во втором классе я вычеркнул параметр IDatabaseSchemaSynchronisationService из сигнатуры конструктора и сделал его локальной переменной, для которой создается только экземпляр (решен):
if (connectionIsReady)
Спасибо всем, кто ответил.