Dispose необов'язковий. Але потрібно. Тобто нічого страшного не буде якщо ви його не викличите. Але в Dispose закривається підключення, а в наступних версях може робитися щось більш суттеве. Тому це потрібно. Аби перестрахуватися.
Тепер про сторінку. Я б не рекомендував робити це полем. По-перше, створення контексту достатньо швидка операція. По-друге краще руками контролювати його створення, та вбивання. А по трете, далеко не при всіх операціях цей котекст потрібен. Наприклад колбеки. Хоча зрозуміло що якщо зробити "lazy" ініціалізацю то це не проблема. Принаймні конструктор відпадає одразу. Якщо всеж таки обрали використання контексту як поле, то вбивати його можна у двох місцяї. Овверайд Dispose сторінки (тут потрібно не забути викликати базову реалізацію). Або OnUnload.
MCPD(Web,Windows,Enterprise), MCTS (WPF, WCF)