Я все еще новичок в инъекции зависимостей, и кажется, что я чего-то не хватает.Autofac конфигурирование NHibernate ISession для разрешения null
Я использовал Autofac в качестве контейнера для разрешения каждой зависимости репозиториев до сеанса NHibernate.
Сессия получает зависимость SystemSetting, которая в значительной степени состоит только из строки подключения MySql.
В начале приложения я настраиваю всю зарегистрированную зависимость, включая инициализацию SessionFactory.
Дело в том, что если строка подключения неверна, приложение выдает исключение времени компиляции, которое не может подключиться к MySql с предоставленной строкой соединения. Что, если я хочу разрешить эту неправильную конфигурацию, чтобы пользователь мог установить собственный собственный, допустим, IP-адрес?
Моя проблема заключается в том, что я не могу получить приложение в форме входа в систему, так как в форме входа в систему был получен репозиторий пользователя в качестве зависимости, который, в свою очередь, получает, предположительно, активную сессию, для чего выбрасывается исключение.
Должен ли я исключать создание сеанса NHibernate из конфигурации Autofac?
Я уверен, что вам было бы лучше, если бы вместо «ISession» было введено одноразовое «ISessionFactory» с ограничением продолжительности жизни. И вы можете отключить проверку зарезервированных ключевых слов при создании фабрики сеанса, чтобы приложение не разбилось. –
Я не уверен, что буду следовать. Singleton lifetime ISessionFactory означает, что каждый репозиторий получит ISessionFactory для своей зависимости, а затем создал ISession после этого. Так ли это? И я ничего не могу понять о зарезервированных ключевых словах. Пожалуйста, уточните больше, извините за беспокойство. –
Это означает, что каждому компоненту вводится * один экземпляр 'ISessionFactory', и каждый из этих компонентов создает свою собственную' ISession' (или несколько «ISessions», если это необходимо). Что касается проверки ключевых слов, то по умолчанию NHibernate подключается к базе данных при создании 'ISessionFactory' для проверки зарезервированных ключевых слов (это для создания схемы/DDL). Вы можете отключить это, поэтому первое подключение к базе данных будет сделано при первом использовании «ISession». –