BloodyBlade: Вы можете заинжектить ее в контролер. Он отработает на одном запросе и умрет, а вместе с ним и сама сессия.
Таким образом получается один запрос - один конекшен.
А вообще множество патернов(если даже не все) были придуманы чтобы поправить недостатки архитектуры или ЯП который используется. В данном случаии вы используете ASP.NET MVC и там есть встроеный механизм для DI, которым можно легко контролировать, как создание, так и уничтожения объектов. И все эти танцы с сессией мне кажутся избыточными... Зачем делать, то что и так уже есть?
Это позволяет уменьшить количество глупых логических ошибок при преобразованиях, вся ответвеность за "страные" преобразования ложиться на плечи програмиста.
Да, но int не перестает быть int-том если на него указывает ссылка с типом object.
В данном случаи obj это ссылка с типом object, которая указывает на упакованый int. Когда вы приводете ее(ссылку) к IComparable, то ранатйм смотрит на то место куда она указывает, а там лежит int который знает что такое IComparable.
Рекомендую почитать про наследование и адресацию в памяти.
По поводу вашего примера с чатом. Не вижу причины в использовать событий и ивентов.
Смоделируем ситуацию.
Эсть некий UI, уровень view model(VM) и бизнес логика(BL) чата. BL слушает сеть и сообщает о изменениях. В данном случаии BL не нужен UI чтобы понять, что что-то произошло. Она сама все знате и когда нужно может вызывать событие на которое VM как-то отреагирует и что-то отобразит на UI.