I don't think you are getting how ADO.NET works. You get a copy of the data
and as such, you only need your connection open long enough to get that
copy. Why in the world would you want to tie up a connection for 10 minutes
when you may only need it open for .5 a second?
The rule of thumb is to call the open method of the connection object when
you are ready to start working with data and call the close method of the
connection as soon as you are done.
Also, in ADO.NET, connection pooling is used by default, so even though you
may be done with a connection object and it may have fallen out of scope, it
won't be disposed because of the pooling.