У меня чертовски много времени пытается выяснить мои проблемы с управлением сессиями в NHibernate. Я предполагаю, что большая часть моих проблем связана с недостатком знаний о понятиях IoC и AOP; по крайней мере, именно об этом я думаю, когда Фабио Мауло продолжает направлять меня.
В любом случае, моя проблема заключается в том, что у меня есть приложение win form, которое выполняет вызовы get и привязывает результат к сетке. После привязки пользователь может выполнить какое-то действие «записи», и это приводит к закрытию сеанса после записи в попытке использовать концепцию сеанса для каждого использования. Затем пользователь может прокручивать сетку, которая вызывает отложенную загрузку, и теперь сеанс закрыт, и я получаю исключение.
Я не хочу, чтобы мой взгляд был осведомлен о моих сессиях, я не хочу отправлять KillAllSessions, когда пользователь закрывает форму. Кроме того, пользователь может иметь несколько открытых форм в любой момент времени, что усугубляет проблемы, связанные с этим методом. По сути, я хочу, чтобы все это работало "за кадром".
Таким образом, моя идея до сих пор состоит в том, чтобы перехватить ленивый вызов загрузки и проверить, открыт ли сеанс, и если нет, повторно открыть его, получить информацию, а затем снова закрыть ее. Однако, насколько я могу судить, что не так много, это, по сути, так или иначе ленивая загрузка. Он перехватывается фабрикой прокси (NHibernate.Bytecode.Castle) и затем получает данные, используя сеанс. Поэтому мне нужно фактически перехватить этот вызов и затем передать его первоначальному предполагаемому перехвату после повторного открытия сеанса. Так что это моя идея.
Мой вопрос, по сути, прежде всего, является ли это правильным способом? Во-вторых, если это так, я даже не знаю, с чего начать. Я никогда не перехватывал вызовы методов, я знал об этом в теории, но не на практике. Я знаю, что есть библиотеки, которые делают подобные вещи, такие как Rhino Commons, но я хочу воспользоваться этой возможностью, чтобы учиться и стать лучшим программистом. Я пытаюсь понять AOP и объекты, связанные с контекстом, но в настоящее время я не пытаюсь понять это. Не могли бы вы, ребята, помочь парню?