I just found in some code that it uses System.Data.SqlTypes.SqlString? I haven't seen it used before. Am I always supposed to use this when sending a string to sql server?
e.g.
cmd.Parameters.Add("@FirstName", (SqlString)FirstName);
It's fine to just pass a normal string. Nothing wrong with converting to a SqlString though; it would be better to call one of the constructors directly though - it can be useful if you want to check locale conversion client side.
I should point out that that method is deprecated and you should be using AddWithValue or specifying the field type, and setting the value after.