以下のコードでは、単純なパラメーター化されたクエリを使用しています。
多くのパラメーターがあり、一部はNULLになる可能性があり、一部は null の場合にFK について不平を言います。ストアド プロシージャを使用せず
に、オプションのパラメーターを持つようにこれを修正するにはどうすればよいですか。
明確にするために、パラメーターが null のときに、そのフィールドを更新しようとするのを避ける必要があります。
conn.Open();
string sql = @"UPDATE UserProfile
SET FirstName = @p_FirstName
,LastName = @p_LastName
,Gender = @p_Gender
,DateOfBirth = @p_DateOfBirth
,CityId = @p_CityId
,MartialStatusId = @p_MartialStatusId
,ProfileImageId = @p_ProfileImageId
WHERE UserId = @p_UserId";
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@p_FirstName", userProfile.FirstName);
cmd.Parameters.AddWithValue("@p_LastName", userProfile.LastName);
cmd.Parameters.AddWithValue("@p_Gender", userProfile.Gender);
cmd.Parameters.AddWithValue("@p_DateOfBirth", userProfile.DateOfBirth);
cmd.Parameters.AddWithValue("@p_CityId", userProfile.CityId);
cmd.Parameters.AddWithValue("@p_MartialStatusId", userProfile.MartialStatusId);
cmd.Parameters.AddWithValue("@p_ProfileImageId", userProfile.ProfileImageId);
cmd.Parameters.AddWithValue("@p_UserId", userProfile.UserId);
cmd.ExecuteNonQuery();
}