http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwithvalue.aspx

I'm used to adding sql parameters to a sqlCommand using the add() function. This allows me to specify the type of the sqlParameter, but it requires another line to set the value.

It's nice to use the AddWithValue function, but it skips the "specify the parameter type" step.

I'm guessing this causes the parameters to be sent over as strings contained within single quotes (''), but I'm not sure.

Is this the case, and does this cause significantly slower performance of the stored procedures?

Note: I understand that it is nice to validate user data on the .NET side of things by specifying the data type for params -- I'm only concerned about reflection-type overhead of AddWithValue either on the .NET or SQL side.

Dean's method works perfectly well, but I think it looks a little odd. Here's an extension method that you can use to overload AddWithValue to take in a SqlDbType so that you can turn the function call into a one liner:

<!-- language: lang-vb -->
<Extension()>
Public Function AddWithValue(ByVal sqlParameterCollection As SqlParameterCollection,
                             ByVal parameterName As String,
                             ByVal value As Object,
                             ByVal sqlDbType As SqlDbType) As SqlParameter
    sqlParameterCollection.Add(parameterName, sqlDbType)
    sqlParameterCollection(parameterName).Value = value
    Return sqlParameterCollection(parameterName)
End Function

Then call it like this:

<!-- language: lang-vb -->
cmd.Parameters.AddWithValue("@entity_uid", clientId, SqlDbType.Int)