From: Terry Holland on
Im not sure if this is the correct group for this question - please feel free
to redirect me to a more appropriate group if necessary

Im assessing Enterprise Libraries and I wanted to know how objects are
disposed of

ie writing data access code by hand i might write soemthing like this

Dim strConnTxt As String =
"Server=(local);Database=Northwind;Integrated Security=True;"
Dim strSql As String = "select * from products where categoryid = "
& txtCategoryID.Text

'create and open the connection object
Using objConn As New SqlConnection(strConnTxt)
'Using Definition
'http://msdn.microsoft.com/en-us/library/htd05whh.aspx
objConn.Open()

'Create the command object
Using objCmd As New SqlCommand(strSql, objConn)
objCmd.CommandType = CommandType.Text

'databind the datagrid by calling the ExecuteReader() method
GridView1.DataSource = objCmd.ExecuteReader()
GridView1.DataBind()
lblCount.Text = ""

End Using

'close the connection
objConn.Close()
End Using

As I understand, by using the 'Using' block, the connection & command
objects are disposed of when exiting the block

If however I use the following code using DataAccessApplicationBlock, how
are these objects (that are inevitably created within the application block
code) disposed of?

Dim db As Database = DatabaseFactory.CreateDatabase()
Dim dbCommand As DbCommand =
db.GetStoredProcCommand("GetProductsByCategory")

db.AddInParameter(dbCommand, "CategoryID", DbType.Int32,
txtCategoryID.Text)
db.AddOutParameter(dbCommand, "RecordCount", DbType.Int32,
txtCategoryID.Text)

GridView1.DataSource = db.ExecuteReader(dbCommand)
GridView1.DataBind()