Jak wspomniałeś, dzieje się tak dlatego, że C#2.0 nie obsługuje parametrów opcjonalnych.
Jednym z obejść może być opakowanie procedur składowanych .NET w zwykłe procedury składowane T-SQL, które akceptują parametry domyślne.
Na przykład:
CREATE PROCEDURE TestProcWrapper
(
@TestIntWrapperParam int = null
)
AS
EXEC TestProc @TestInt = @TestIntWrapperParam
To trochę brzydkie, ale na razie może Ci pomóc.