I had a couple of thoughts about how you can approach working with the MVC framework.
View Model\Input Model
If a view requires lots of data which is stored in a variety of different places then create a specific View Model
to aggregate it. The point of this technique is to ensure that when the controller returns the view there is no need to go back to the database for further lookups.
This can also be applied to the models which are passed in to a controller action. An Input Model
will gather up all the details from the UI ready for the controller to update the underlying domain. As with the View Model
the Input Model
is in a shape that suits the view and it is the controllers job to then relate this to the domain.
Managing connections
The question does not mention why you need to reuse the connection. In general I have found it is best not to keep a connection to a database open. The .Net framework does a good job of managing a connection pool. Run the query and close the connection as soon as possible.
If you are using an ORM like NHibernate then you must ensure that the SessionFactory
is only created once for the Application. This can be achieved by creating a singleton for it.