ページにいくつかのテキストボックスがありますが、それらはオプションであり、この DAL コードがあるため、空にすることができます
parameters.Add(new SqlParameter("@FirstName", FirstName));
parameters.Add(new SqlParameter("@LastName", LastName));
parameters.Add(new SqlParameter("@DisplayName", DisplayName));
parameters.Add(new SqlParameter("@BirthDate", BirthDate));
parameters.Add(new SqlParameter("@Gender", Gender));
これらのフィールドはいずれも空にすることができます。問題は、私が受け取る空のときですProcedure XXX requires @FirstName which was not supplied
次に、コードを次のように変更しました
parameters.Add(new SqlParameter("@FirstName", String.IsNullOrEmpty(FirstName) ? DBNull.Value : (object)FirstName));
parameters.Add(new SqlParameter("@LastName", String.IsNullOrEmpty(LastName) ? DBNull.Value : (object) LastName));
parameters.Add(new SqlParameter("@DisplayName", String.IsNullOrEmpty(DisplayName) ? DBNull.Value : (object) DisplayName));
parameters.Add(new SqlParameter("@BirthDate", BirthDate.HasValue ? (object)BirthDate.Value : DBNull.Value));
parameters.Add(new SqlParameter("@Gender", String.IsNullOrEmpty(Gender) ? DBNull.Value : (object) Gender));
object
しかし、三項ステートメントでは両方の値が同じ型である必要があるため、これは特にキャストが面倒に見えます。
空文字列や空文字列NULL
がデータベースで扱われないのはなぜですか? これを変換する必要DBNull.Value
がある場合、よりクリーンな方法はありますか? データベースに空の文字列として値を保存することは役に立ちましたがNULL
、データベースでのクエリも面倒になります
一般的な慣習やそれに近いものについてアドバイスをお願いします。